gpt4 book ai didi

php - 如何在 symfony2 服务中执行 $this->render()?

转载 作者:可可西里 更新时间:2023-11-01 12:25:37 26 4
gpt4 key购买 nike

我在普通的 symfony2 Controller 中有这段代码:

            $temp = $this->render('BizTVArchiveBundle:ContentTemplate:'.$content[$i]['template'].'/view.html.twig', array(
'c'=> $content[$i],
'ordernumber' => 1,
));

而且效果很好。

现在我正试图将其移动到服务中,但我不知道如何访问普通 Controller 的 $this 等价物。

我试过像这样注入(inject)容器:

    $systemContainer = $this->container;

$temp = $systemContainer->render('BizTVArchiveBundle:ContentTemplate:'.$content[$i]['template'].'/view.html.twig', array(
'c'=> $content[$i],
'ordernumber' => 1,
));

但这没有用,我想那是因为 render 并没有真正使用普通 Controller 的 $this->container,而是只使用了 $this 部分。

有人知道如何在服务中使用 $this->render() 吗?

最佳答案

检查 Symfony\Bundle\FrameworkBundle\Controller 类中的方法 render。它说:

return $this->container->get('templating')->render($view, $parameters);

既然你的服务中已经有了容器,你就可以像上面的例子一样使用它。

注意:将整个容器注入(inject)服务被认为是不好的做法,在这种情况下您应该只注入(inject)模板引擎并在模板对象上调用 render 方法。

如此完整的图片:

services.yml:

services:
your_service_name:
class: Acme\YourSeviceClass
arguments: [@templating]

你的类(class):

public function __construct($templating)
{
$this->templating = $templating
}

和你的渲染调用:

$this->templating->render($view, $parameters)

关于php - 如何在 symfony2 服务中执行 $this->render()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909308/

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