0

我知道可以在渲染的模板文件中访问 $view,但我想知道是否有任何其他地方可以获取它?

原因是我在经典/旧系统之上构建 SF2,并且某些模板无法使用普通渲染方法进行渲染。但是,我仍然希望能够访问这些模板中的视图助手,所以我想初始化一个可以在这些旧模板中使用的全局 $view

4

1 回答 1

1

这些帮助器在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的文档

于 2012-12-27T10:24:18.130 回答