一个控制器2套模版php,如何不用一个自定义的控制器渲染一个模板
如何不用一個(gè)自定義的控制器渲染一個(gè)模板
通常,當(dāng)您需要?jiǎng)?chuàng)建一個(gè)頁(yè)面,您需要?jiǎng)?chuàng)建一個(gè)控制器并且從該控制器中呈現(xiàn)模板。但如果您僅僅呈現(xiàn)一個(gè)簡(jiǎn)單的模板,并且不需要傳遞給它的任何數(shù)據(jù),則完全沒(méi)必要?jiǎng)?chuàng)建一個(gè)控制器,通過(guò)使用內(nèi)置的 FrameworkBundle:Template:template 控制器就可以達(dá)到目的。
例如,假設(shè)您想要呈現(xiàn) static/privacy.html.twig 模板,并且不需要給它傳遞任何變量。那么您可以這樣做而無(wú)需創(chuàng)建一個(gè)控制器:
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 控制器將簡(jiǎn)單地呈現(xiàn)給您把它當(dāng)做默認(rèn)模板傳遞的任何模板。
當(dāng)然可以也使用這個(gè)技巧把控制器嵌入到模板中來(lái)展現(xiàn)這個(gè)模板。但由于把控制器嵌入到模板內(nèi)的目的通常是在自定義的控制器中準(zhǔn)備某些數(shù)據(jù),這可能只是在您想要緩存這個(gè)頁(yè)面的一部分的時(shí)候有用(請(qǐng)參見(jiàn)緩存靜態(tài)模板)。
Twig:
{{ render(url('acme_privacy')) }}
PHP:
<?php echo $view['actions']->render(
$view['router']->generate('acme_privacy', array(), true)
) ?>
緩存的靜態(tài)模板
因?yàn)橥ǔJ褂眠@種方法可以實(shí)現(xiàn)模板靜態(tài)化,所以對(duì)它們進(jìn)行緩存會(huì)比較有意義。幸運(yùn)的是,這相對(duì)來(lái)說(shuō)比較容易,通過(guò)配置您的路徑中的幾個(gè)其他變量,您就可以控制您的頁(yè)面如何緩存:
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 的值用于修改在控制器中創(chuàng)建的響應(yīng)對(duì)象。對(duì)緩存的詳細(xì)信息,請(qǐng)參閱 HTTP 緩存。
這里也有一個(gè)私有變量 (此處未顯示)。在默認(rèn)情況下,響應(yīng)將予以公開(kāi),只要它傳遞了 maxAge 或 sharedAge 。如果設(shè)置為 true,響應(yīng)將被標(biāo)記為私有。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的一个控制器2套模版php,如何不用一个自定义的控制器渲染一个模板的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java启动应用_java 学习:在ja
- 下一篇: php 数组 定义 遍历,php针对数组