一个控制器2套模版php,如何不用一个自定义的控制器渲染一个模板
如何不用一個自定義的控制器渲染一個模板
通常,當您需要創建一個頁面,您需要創建一個控制器并且從該控制器中呈現模板。但如果您僅僅呈現一個簡單的模板,并且不需要傳遞給它的任何數據,則完全沒必要創建一個控制器,通過使用內置的 FrameworkBundle:Template:template 控制器就可以達到目的。
例如,假設您想要呈現 static/privacy.html.twig 模板,并且不需要給它傳遞任何變量。那么您可以這樣做而無需創建一個控制器:
YAML:
acme_privacy:
path: /privacy
defaults:
_controller: FrameworkBundle:Template:template
template: static/privacy.html.twig
XML:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
FrameworkBundle:Template:template
static/privacy.html.twig
PHP:
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('acme_privacy', new Route('/privacy', array(
'_controller' => 'FrameworkBundle:Template:template',
'template' => 'static/privacy.html.twig',
)));
return $collection;
FrameworkBundle:Template:template 控制器將簡單地呈現給您把它當做默認模板傳遞的任何模板。
當然可以也使用這個技巧把控制器嵌入到模板中來展現這個模板。但由于把控制器嵌入到模板內的目的通常是在自定義的控制器中準備某些數據,這可能只是在您想要緩存這個頁面的一部分的時候有用(請參見緩存靜態模板)。
Twig:
{{ render(url('acme_privacy')) }}
PHP:
<?php echo $view['actions']->render(
$view['router']->generate('acme_privacy', array(), true)
) ?>
緩存的靜態模板
因為通常使用這種方法可以實現模板靜態化,所以對它們進行緩存會比較有意義。幸運的是,這相對來說比較容易,通過配置您的路徑中的幾個其他變量,您就可以控制您的頁面如何緩存:
YAML:
acme_privacy:
path: /privacy
defaults:
_controller: FrameworkBundle:Template:template
template: 'static/privacy.html.twig'
maxAge: 86400
sharedAge: 86400
XML:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
FrameworkBundle:Template:template
static/privacy.html.twig
86400
86400
PHP:
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('acme_privacy', new Route('/privacy', array(
'_controller' => 'FrameworkBundle:Template:template',
'template' => 'static/privacy.html.twig',
'maxAge' => 86400,
'sharedAge' => 86400,
)));
return $collection;
MaxAge 和 sharedAge 的值用于修改在控制器中創建的響應對象。對緩存的詳細信息,請參閱 HTTP 緩存。
這里也有一個私有變量 (此處未顯示)。在默認情況下,響應將予以公開,只要它傳遞了 maxAge 或 sharedAge 。如果設置為 true,響應將被標記為私有。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的一个控制器2套模版php,如何不用一个自定义的控制器渲染一个模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java启动应用_java 学习:在ja
- 下一篇: c语言编程题2^0+2^1+……+2e6