createFormBuilder()在哪里?

时间:2013-09-29 23:40:54

标签: symfony

我正在使用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

我认为扩展ContainerAware和扩展Controller

之间存在差异

1 个答案:

答案 0 :(得分: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);