【问题标题】:where the createFormBuilder()?createFormBuilder() 在哪里?
【发布时间】:2013-09-30 08:31:32
【问题描述】:

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

我该如何解决这个问题?

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

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

我认为 extends ContainerAware 和 extends Controller 之间存在一些差异

【问题讨论】:

    标签: symfony


    【解决方案1】:

    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);
    

    【讨论】:

    • 非常感谢,对我很有帮助
    猜你喜欢
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多