傳遞給樹枝模板的每個參數默認都是轉義的。所以通常你需要使用raw
過濾器。但是如果使用raw
過濾器對你很煩,那麼你有兩個選擇。
首先 - 禁用autoescaping(不推薦):
打開autoescaping全球關閉的設置autoescape
選項false
在config.yml
:
twig:
autoescape: false
二 - 創建樹枝擴展(推薦):
使用函數創建樹枝擴展,該函數將渲染c意圖和它是安全的HTML。
<?php
// src/Acme/DemoBundle/Twig/BreadcrumbExtension.php
namespace Acme\DemoBundle\Twig;
class BreadcrumbExtension extends \Twig_Extension
{
protected $breadcrumbService;
public function __construct(BreadcrumbService $breadcrumbService)
{
$this->breadcrumbService = $breadcrumbService;
}
/**
* Returns a list of functions to add to the existing list.
*
* @return array An array of functions
*/
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('acme_breadcrumbs',
array($this, 'renderBreadcrumbs'),
array('is_safe' => array('html'))
),
);
}
public function renderBreadcrumbs()
{
return $this->breadcrumbService->renderHtml();
}
public function getName()
{
return 'breadcrumb_extension';
}
}
註冊服務:
<service id="acme.breadcrumb.twig.extension" class="Acme\DemoBundle\Twig\BreadcrumbExtension" public="false">
<tag name="twig.extension" />
<argument type="service" id="acme.breadcrumb.service" />
</service>
現在你可以使用它在樹枝模板是這樣的:
{{ acme_breadcrumbs() }}
第二種情況是非常好的,我試試吧。謝謝! –