gpt4 book ai didi

symfony - symfony2 中的 containerAware 和 Controller

转载 作者:行者123 更新时间:2023-12-01 08:33:14 26 4
gpt4 key购买 nike

FOSUserBundle 配置文件 Controller

 use Symfony\Component\DependencyInjection\ContainerAware;
class ProfileController extends ContainerAware

一些功能还可以......但是当我尝试然后创建表单时

$form = $this->createForm

出现这个错误:Call to undefined method ProfileController::createForm()

但是当我把它改成这个时:

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class ProfileController extends Controller

表单已呈现...所以...我不知道如何将此 Controller 添加到我的类中并且不删除 ContainerAware ? :/

//

我的解决方案?

我使用的不是容器感知

use Symfony\Component\DependencyInjection\ContainerAwareInterface;

然后

class ProfileController extends Controller implements ContainerAwareInterface

但我不知道我不能看到不同的我现在是菜鸟所以......这是一个好的解决方案还是我会破坏一些东西?

最佳答案

回答你原来的问题,

替换:

$form = $this->createForm

与:

$form = $this->container->get('form.factory')->create($type, $data, $options);

createForm 方法只是定义在 Symfony\Bundle\FrameworkBundle\Controller\Controller 中的一个便捷方法。由于各种原因,第 3 方库倾向于不扩展 Controller 类。因此 createForm 不可用。

真正的问题是:你为什么要扩展 Profile Controller ?在大多数情况下,它是不必要的。最好通过监听事件来进行自定义。这当然假设您使用的是 FOSUserBundle 的开发版本。

关于symfony - symfony2 中的 containerAware 和 Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15407546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com