作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在普通的 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/
我是一名优秀的程序员,十分优秀!