为了可以或许重用机关文件中的区块,可以利用模板来取代节制器中的HTML语句。首先建设页面机关文件:
{# app/Resources/views/layout.html.twig #}<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{% block title %}Hello Application{% endblock %}</title>
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
留意,该文件位于app/Resources/views/目次中,浸染范畴是整个应用措施的全局模板文件。在该文件中界说了两个区块:title和body。接下来就是建设一个专用于Hello节制器的模板,如下所示:
{# src/Acme/HelloBundle/Resources/views/Hello/index.html.twig #}{% extends '::layout.html.twig' %}
{% block body %}
Hello {{ name }}!
{% endblock %}
在该文件中,它担任了全局模板,而且界说了区块body,这样就覆写了全局模板中的body区块。假如系统在渲染到该模板时,会将区块body覆写全局模板的区块body,再举办渲染。
最后,将节制器中的HTML语句改成渲染上述模板即可:
// src/Acme/HelloBundle/Controller/HelloController.phpnamespace Acme\HelloBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class HelloController extends Controller
{
public function indexAction($name)
{
return $this->render('AcmeHelloBundle:Hello:index.html.twig', array('name' => $name));
}
}
打完收功!我们已经建设了一个典范的Symfony2措施。假如兄弟们有什么疑问的话可以下面的评论中直接提。