レンダリングされたテンプレート ファイル内で $view にアクセスできることは理解していますが、他の場所で取得できる方法があるのでしょうか?
その理由は、クラシック/レガシー システムの上に SF2 を構築しており、通常のレンダリング方法ではレンダリングできない特定のテンプレートがあるためです。ただし、これらのテンプレート内のビュー ヘルパーにアクセスできるようにしたいので、これらの従来のテンプレートで使用できるグローバルな $view を初期化したい
レンダリングされたテンプレート ファイル内で $view にアクセスできることは理解していますが、他の場所で取得できる方法があるのでしょうか?
その理由は、クラシック/レガシー システムの上に SF2 を構築しており、通常のレンダリング方法ではレンダリングできない特定のテンプレートがあるためです。ただし、これらのテンプレート内のビュー ヘルパーにアクセスできるようにしたいので、これらの従来のテンプレートで使用できるグローバルな $view を初期化したい
これらのヘルパーはPhpEngine
、Templating コンポーネント ( 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 の詳細については、ドキュメントを参照してください。