2012-12-27 22 views
0

我知道$ view可以在一個渲染的模板文件中訪問,但是我想知道是否還有其他地方可以在其他地方使用它?

原因是我在經典/遺留系統之上構建SF2,並且某些模板不能用普通的渲染方法渲染。但是,我仍然希望能夠訪問這些模板中的視圖幫助程序,因此我想要初始化可用於這些傳統模板的全局$視圖。

回答

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在the docs

+0

謝謝。我只是想知道,如果我同時使用樹枝和php模板會怎麼樣? – mr1031011

+0

您不能在一個模板中混用Twig和PHP。並且在PHP中創建一個模板,而在Twig中創建另一個模板也是不正確的,我建議在一個包中只使用一個模板格式。如果你想要Twig引擎,你可以使用'twig'服務(我認爲''templating'也可以工作),並且有一種服務來檢查模板是否使用PHP或Twig,但我現在不知道名字(只需var_dump控制器中的'$ this-> container-> getServiceIds()',你會發現它) –

相關問題