gpt4 book ai didi

php - 在 Controller 构造函数上加载容器服务,Symfony

转载 作者:行者123 更新时间:2023-12-03 23:08:29 25 4
gpt4 key购买 nike

有没有办法在 Controller 构造函数中加载容器服务,比如

class PostController extends Controller
{

protected $breadcrumb;

public function __construct()
{
//initializing breadcrumb
$breadcrumbs = $this->get("white_october_breadcrumbs");
$breadcrumbs->addRouteItem("Dashboard", "adminPage");
$breadcrumbs->addRouteItem("Post", "postPage");
$this->breadcrumb = $breadcrumbs;
}
//..
}

最佳答案

您正在扩展 Symfony\Bundle\FrameworkBundle\Controller\Controller 类,该类通过 setter 注入(inject)(方法 setContainer)注入(inject) container 而不是通过构造函数参数。

当您在 __construct() 中时,您还没有可用的 $container。因此,您的解决方案是覆盖 setContainer 方法(由服务容器调用,在构造 Controller 之后立即调用)并将您的逻辑放在那里(而不是 __construct())。

class PostController extends Controller
{

protected $breadcrumb;

public function setContainer(ContainerInterface $container = null)
{
parent::setContainer($container);
$breadcrumbs = $container->get("white_october_breadcrumbs");
$breadcrumbs->addRouteItem("Dashboard", "adminPage");
$breadcrumbs->addRouteItem("Post", "postPage");
$this->breadcrumb = $breadcrumbs;
}

}

其他解决方案,需要更多的工作,是 define your controller as a service并将其设置为将 container 作为构造函数参数

关于php - 在 Controller 构造函数上加载容器服务,Symfony,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29295363/

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