Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 如何在控制器外部获取$view_Symfony - Fatal编程技术网

Symfony 如何在控制器外部获取$view

Symfony 如何在控制器外部获取$view,symfony,Symfony,我知道$view可以在渲染的模板文件中访问,但我想知道是否还有其他方法可以在别处获得它 原因是我在经典/传统系统的基础上构建SF2,并且某些模板无法使用普通渲染方法进行渲染。但是,我仍然希望能够访问这些模板中的视图帮助程序,因此我希望初始化一个全局$view,该视图可用于这些遗留模板中这些帮助程序在模板组件()中的PhpEngine类中提供。您可以使用templating.engine.php服务访问这个类(您需要启用php作为模板引擎) 从控制器上看,它将如下所示: /。。。 公共职能行动(…

我知道$view可以在渲染的模板文件中访问,但我想知道是否还有其他方法可以在别处获得它


原因是我在经典/传统系统的基础上构建SF2,并且某些模板无法使用普通渲染方法进行渲染。但是,我仍然希望能够访问这些模板中的视图帮助程序,因此我希望初始化一个全局$view,该视图可用于这些遗留模板中

这些帮助程序在模板组件()中的
PhpEngine
类中提供。您可以使用
templating.engine.php
服务访问这个类(您需要启用php作为模板引擎)

从控制器上看,它将如下所示:

/。。。
公共职能行动(…)
{
// ...
$template=$this->get('templating.engine.php')->render(…);
}
如果您使用的是其他类,则应使用DI:

//src/Acme/DemoBundle/Foo.php
名称空间Acme\DemoBundle;
使用Symfony\Component\Templating\EngineInterface;
福班
{
私有$templating;
公共函数构造(EngineInterface$模板化)
{
$this->templating=$templating;
}
公共功能条()
{
// ...
$template=$this->templating->render(…);
}
}
//app/config.yml
服务:
acme_演示:
傅:
类别:Acme\DemoBundle\Foo
参数:[@templating.engine.php]

更多关于DI in的信息。

谢谢。我只是想知道,如果我同时使用twig和php模板呢?你不能在一个模板中混合twig和php。在PHP中制作一个模板,在Twig中制作另一个模板也不正确,我建议在捆绑包中只使用一种模板格式。如果你想要细枝引擎,你可以使用
Twig
服务(
templating
也可以,我想),并且有一个服务可以检查模板是否使用PHP或Twig,但是我现在不知道它的名称(只需在你的控制器中转储
$this->container->getServiceIds()
,你就会找到它)