我知道可以在渲染的模板文件中访问 $view,但我想知道是否有任何其他地方可以获取它?
原因是我在经典/旧系统之上构建 SF2,并且某些模板无法使用普通渲染方法进行渲染。但是,我仍然希望能够访问这些模板中的视图助手,所以我想初始化一个可以在这些旧模板中使用的全局 $view
我知道可以在渲染的模板文件中访问 $view,但我想知道是否有任何其他地方可以获取它?
原因是我在经典/旧系统之上构建 SF2,并且某些模板无法使用普通渲染方法进行渲染。但是,我仍然希望能够访问这些模板中的视图助手,所以我想初始化一个可以在这些旧模板中使用的全局 $view
这些帮助器在PhpEngine
模板组件 ( docs ) 的类中提供。您可以使用该服务访问此类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]
更多关于 DI的文档。