我正在使用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
之间存在差异答案 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);