gpt4 book ai didi

Symfony2,如果 Controller 有构造函数,如何在 Twig 模板中呈现 Controller 的 Action

转载 作者:行者123 更新时间:2023-12-04 17:47:33 26 4
gpt4 key购买 nike

从官方文档 (http://symfony.com/doc/current/quick_tour/the_view.html#embedding-other-controllers) 我学习了如何在 Twig 模板中嵌入 Controller 。

当 Controller 注入(inject)属性时会出现问题。有没有办法使用 Twig 的 render(controller())与具有构造函数的 Controller 一起使用?

当我尝试以下操作时:

{{ render(controller(
'SomeBundle:Some:renderList',
{ 'request': app.request }
)) }}

我收到此错误: Missing argument 1 for SomeBundle\Controller\SomeController::__construct()

此 Controller 的构造函数如下所示:
public function __construct($container, SomeService $someService) {
parent::__construct($container);
$this->someService = $someService;
}

容器和 someService 的注入(inject)在 service.yml 中配置。

再说一次,我的问题是:当这个 Controller 使用依赖注入(inject)时,如何在 Twig 的模板中嵌入 Controller ?

更新

我可以这样做: {{ render(app.request.baseUrl ~ '/some/route') }}但我想避免制作路线。

更新 2

来自 service.yml 的服务定义
some.controller:
class: SomeBundle\Controller\SomeController
arguments: ["@service_container", "@some.service"]

最佳答案

如果您已将 Controller 定义为服务,则需要将其“注入(inject)”到 twig 中以使其可用并正确实例化。

我建议创建 Twig 全局变量

#app/config/config.yml
twig:
globals:
cc: "@comparison.controller"

然后你可以使用其中一种方法( Action ?)
{{ cc.foo(aBarVariable) }}

替代答案

您可以创建一个 twig extension您可以在其中注入(inject)服务以使其可用于 View

关于Symfony2,如果 Controller 有构造函数,如何在 Twig 模板中呈现 Controller 的 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28714927/

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