我知道$ view可以在渲染的模板文件中访问,但是我想知道是否有我可以在其他地方获取它?
原因是我在经典/遗留系统之上构建SF2,并且某些模板无法使用普通的渲染方法进行渲染。但是,我仍然希望能够访问这些模板中的视图助手,因此我想初始化一个可以在这些旧模板中使用的全局$视图
答案 0 :(得分:1)
这些助手在Templating组件(docs)的PhpEngine
类中提供。您可以使用templating.engine.php
服务访问此类(您需要启用PHP作为模板引擎)。
从控制器看起来如下:
// ...
public function fooAction(...)
{
// ...
$template = $this->get('templating.engine.php')->render(...);
}
如果您正在使用其他课程,则应使用DI:
// src/Acme/DemoBundle/Foo.php
namespace Acme\DemoBundle;
use Symfony\Component\Templating\EngineInterface;
class Foo
{
private $templating;
public function __construct(EngineInterface $templating)
{
$this->templating = $templating;
}
public function bar()
{
// ...
$template = $this->templating->render(...);
}
}
// app/config.yml
services:
acme_demo:
foo:
class: Acme\DemoBundle\Foo
arguments: [@templating.engine.php]
有关the docs中的DI的更多信息。