Twig模板,一个非常小巧的模板并且也很精致。slim框架里也是用的twig模板。
多数前端工程师更加喜欢使用模板,因为模板通常来说有着与生俱来的有点,比如可以跨语言,而且功能相对于普通HTML的文件要强大些。通常有一些便捷功能,比原生php方便一些。
如何使用一个模板。
模板对应路径为Bundle/Resources/views目录下,在views中建立子目录,通常是和控制器名字相对应的。
在控制器中用$this->render()方法渲染模板。
第一个参数是模板地址路径,第二参数是在模板中使用的变量数组。
命名:通常来说命名为xxx.html.twig文件。(twig的教程网上也有,官网也有教学)
{{ }}双花括号里面是变量。把一个字符串值赋值给模板
<html>
<p>{{msg}}</p>
</html>
再写一个Action,其实就是一个Response啦
public function msgAction(){
$msg = "这里面有猫腻";
return $this->render('MyBundle:Default:msg.html.twig' array("msg=>$msg") );
}
然后让/msg路由来执行这个动作
my_msgpage:
path: /msg
defaults:{_controller:MyBundle:Default:msg}
浏览器访问 localhost/sf/star/web/app_dev.php/msg 就可以使用模板传递了变量msg 也就是显示 这里面有猫腻具体语法就不写了,官网上讲的很详细。
绝大多数情况下,模板中会有很多通用的元素,比如header或者footer..人们常常会考虑如何复用这些元素,写一个单独的header或者footer模板,在页面上导入他们,但其实这样的做法实现效果并不很佳。
现在绝大多数的想法是通过模板的继承,也就是在父模板中留出相应的block,而且这些block可以被继承它的子模板进行重写或保留它现有,子模板只需要写它所具有的那些内容就可以了。这样的话,会保留一个更加统一的风格。
父模板会使用base.html.twig这样的命名。方便引用,通常放在app/Resources/views目录下。
父模板中会有一个block模块
{% block %}
....
{% endblock %}