0
我知道$ view可以在一個渲染的模板文件中訪問,但是我想知道是否還有其他地方可以在其他地方使用它?
原因是我在經典/遺留系統之上構建SF2,並且某些模板不能用普通的渲染方法渲染。但是,我仍然希望能夠訪問這些模板中的視圖幫助程序,因此我想要初始化可用於這些傳統模板的全局$視圖。
我知道$ view可以在一個渲染的模板文件中訪問,但是我想知道是否還有其他地方可以在其他地方使用它?
原因是我在經典/遺留系統之上構建SF2,並且某些模板不能用普通的渲染方法渲染。但是,我仍然希望能夠訪問這些模板中的視圖幫助程序,因此我想要初始化可用於這些傳統模板的全局$視圖。
這些幫助程序在模板組件中的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在the docs。
謝謝。我只是想知道,如果我同時使用樹枝和php模板會怎麼樣? – mr1031011
您不能在一個模板中混用Twig和PHP。並且在PHP中創建一個模板,而在Twig中創建另一個模板也是不正確的,我建議在一個包中只使用一個模板格式。如果你想要Twig引擎,你可以使用'twig'服務(我認爲''templating'也可以工作),並且有一種服務來檢查模板是否使用PHP或Twig,但我現在不知道名字(只需var_dump控制器中的'$ this-> container-> getServiceIds()',你會發現它) –