2

我正在使用 symfony2 和 FOSUserBundle

我想在 ProfileController 中使用“createFormBuilder”

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Symfony\Component\HttpFoundation\Response;
use Acme\UserBundle\Entity\AttrMutor;


class ProfileController extends ContainerAware
{
      $attrMutor = new AttrMutor();
      $form = $this->createFormBuilder($attrMutor);    

它显示例如

FatalErrorException: Error: Call to undefined method Acme\UserBundle\Controller\ProfileController::createFormBuilder() 

我该如何解决这个问题?

我可以在其他控制器中使用 $this->createFormBuilder,例如

class DefaultController extends Controller
{
      $attrMutor = new AttrMutor();
      $form = $this->createFormBuilder($attrMutor);   //OK

我认为 extends ContainerAware 和 extends Controller 之间存在差异的暗示

4

1 回答 1

7

createFormBuilder方法在 Symfony 的基Controller类中。( http://api.symfony.com/2.3/index.html?q=createFormBuilder )

如果您只想让您的控制器扩展ContainerAware而不是Controller,您仍然可以从服务容器中获取表单构建器:

$builder = $this->container->get('form.factory')->createBuilder('form', $data, $options);
于 2013-09-30T00:12:18.390 回答