菜单

Symfony2框架创设项目与模板设置实例详解

2019年2月26日 - 金沙编程资讯

    symfony是一个由组件构成的框架,登录验证的也是由一些零件构成,下边就介绍一下FOSUserBundle的使用。

正文实例讲述了Symfony2框架创立项目与模板设置的措施。分享给大家供大家参考,具体如下:

① 、基本使用

本文实例讲述了Symfony2学习笔记之模板用法。分享给我们供大家参考,具体如下:

      以symfony 3.3为例,

条件准备与大概浏览

{{ demo }}输出2个demo变量;

大家精晓,controller负责处理每四个进来Symfony2应用程序的乞求。实际上,controller把当先58%的劳顿工作都委托给了别样地点,以使代码能够被测试和选定。当3个controller须求生成HTML,CSS只怕其余剧情时,它把那一个干活儿给了3个模板化引擎。

      首先大家须求先安装一下FOSUserBundle。

屡见不鲜于在windows使用netbean编辑器并应用virtualbox虚拟centos系统,
预将nginx+php-fpm+mysql,  当然apache也是正确的挑选,  
使用

 

模板:

       第1步:须要先下载FOSUserBundle

一 、下载与环境设置

{% func %}通常是含有多个twig函数例如 for;

两个模板仅仅是三个文本文件,它能生成自由的文本格式(HTML,XML,CSV,LaTex…)。最显赫的沙盘类型正是PHP模板了,能够被PHP解析的文书文件,它糅合了文件和PHP代码。

        composer require friendsofsymfony/user-bundle “~2.0”

  1. 何以于centos下面建立开发环境不再详述,
    当然也得以在windows下面建立开发条件。

  2. 至于选取 symfony代替127.0.0.1 在liunx系统中期维修改/etc/hosts文件,
    win7系统中期维修改 C:\Windows\System32\drivers\etc\host
    文件(须要用管理员权限打开)

举个for循环的例证:

<!DOCTYPE html>
<html>
  <head>
    <title>Welcome to Symfony!</title>
  </head>
  <body>
    <h1><?php echo $page_title ?></h1>
    <ul id="navigation">
      <?php foreach ($navigation as $item): ?>
        <li>
          <a href="<?php echo $item->getHref() ?>">
            <?php echo $item->getCaption() ?>
          </a>
        </li>
      <?php endforeach; ?>
    </ul>
  </body>
</html>

        第②步:须要在基本之中注册它,

投入类似于IP 别名1 别名2的剧情即可, 如:

{% for i in 0..10 %}

不过Symfony2包中全数一种特别有力的模板化语言叫Twig。
它同意你写简洁,可读法模板语言。对页面设计师更团结,在重重上面比PHP模板更抓好硬。

      澳门金沙国际 1

复制代码 代码如下:

  <em>{{ i }}</em>

<!DOCTYPE html>
<html>
  <head>
    <title>Welcome to Symfony!</title>
  </head>
  <body>
    <h1>{{ page_title }}</h1>
    <ul id="navigation">
      {% for item in navigation %}
        <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
      {% endfor %}
    </ul>
  </body>
</html>

      第1步:创立用户类

# /etc/hosts 127.0.0.1 symblog dev symfony

{% endfor %}

在那几个Twig文件中,定义了五个门类的尤其语法

        那一个包的对象是将一些User类保存到数据库(MySql,MongoDB,CouchDB等)。那么,你的率先份工作就是User为您的应用程序创立2个类。那一个类能够轻易翻动和操作:添加你觉得有效的别样性质或方法。

3.手动下载symfony2, 也得以参照那几个页面用Composer
实行设置。

自然也得以打印对象,例:

{{…}} : “说一些事”,
打印八个变量或许3个表明式的值到模板。
{%…%} :
“做一些事”,控制模板逻辑的标签,它用于执行比如for循环语句等。
{# 那是三个注释 #}, “注释”。

        该bundle提供了一度为大部分字段映射的基类,以便更易于地开创您的实体。

唯一须要专注的是: app/cache
和app/logs目录要求设置成777权力。windows的开支条件应当不设有这一个难题。

{% for user in users %}

Twig也暗含filters,在渲染从前修改内容。下边包车型地铁言语展现把title变量全体渲染为巨型。

                   
澳门金沙国际 2

  1. 修改apache
    只怕nginx配置文件symfony域名指向下载的symfony文件的web目录。

<span>user.username</span>

{{ title|upper }}

      a)Doctrine ORM用户类

这儿应该能够通过 访问到symfony的暗中认可页面,
有多少个demo能够参照学习。

{% endfor %}

Twig暗中同意情状下有一大群的价签(tags)和过滤器(filters)能够行使。当然你也足以依照须求足够扩张。注册三个Twig扩丰富外简单,创制一个新劳动并把它标志为Twig.extension
标签。就跟你看到的一致,Twig也支撑效能和新职能的增进。比如,下边选用三个正规的for标签和cycle功效函数来打字与印刷12个div
标签,用odd,even 类代替。

      澳门金沙国际 3

澳门金沙国际 4

注:users是从控制器中传播的指标参数

{% for i in 0..10 %}
<div alss="{{ cycle(['odd','even'],i) }}">
<!--一些其它HTML -->
</div>
{% emdfor %}

      实体名称是可更改的,作者的实业原本的称谓是BlogsUser,为了方便使用Fosuserbundle下的实体所以实行了改变,也不转移依照个体喜好。

app_dev.php 暗中认可加载了3个开发工具条在底下, 显示了方今页面包车型地铁片段消息,
极大地惠及了先后的调节, 唯有当环境变量为dev时才会来得。

 

Twig模板缓存

      b)MongoDB用户类

  1. 采取composer安装时, 会提醒输出mysql等相关音讯, 须要修改那一个音信,
    只怕是一向下载的文书, 能够进来页面包车型大巴“Configure” 进行有关安装。

{{# #}}注释;

Twig十分的快。
每一个Twig模板被编写翻译到原生的PHP类,它将在运行时被渲染。编写翻译过的类被保存在app/cache/{environment}/twig
目录下并在有个别情形下,对一切调节和测试卓殊管用。当debug方式可用时,3个twig模板即使产生变更将会被机关心重视新编写翻译。那就代表你能够在开发进度中随心所欲的修改模板,而不要担心供给去排除内部存款和储蓄器了。当debug情势被关门时,你必须手动的铲除Twig缓存目录,以便能够再一次生成Twig模板。

      澳门金沙国际 5

Bundles(或然能够称之为包, 束, 程序集,可能项目,
依然用英文吧)是symfony的底子东东, 1个个享用出去可重新利用的代码封装,
甚至于symfony本人是用作二个bundles运行的。  包罗控制器、模块、模板,
甚至于图像与js, css样式表等财富。   很糊涂的东西,
不相同差其余bundles使用了php5.3现在的命名空间, 超越50%cpenal,
da虚拟主机好像唯有php5.2版本吧, 不恐怕运营symfony2了。

{{ demo | upper }} 将demo转化为大写,那是2个过滤器的例证;

模板继承和布局

      c)CouchDB用户类

二 、创造三个Bundle

 

绝当先八分之四的时候,模板在档次中用来共享通用的因素,比如header,footer,sidebar等等。在Symfony第22中学,大家将应用分化的考虑角度来相比那几个难点。1个模板能够被其余的模板装饰。那一个的办事规律跟PHP类10分像,模板继承让你能够创制三个基础”layout”模板,它包括你的站点的具备通用成分并被定义成blocks。那里的block能够类比为PHP基类的点子。
3个字模板能够延续基础layout模板相提并论写它任何三个block。

      澳门金沙国际 6

在下边包车型大巴例证少校创立一个博客,  Symfony 提供了大批量工具来连忙地创造项目。
比如大家可以用它来快捷创设3个博客的基础bundle.

二 、模版继承

于今率先创建一个base layout文件:

      第肆步:配置应用程序的security.yml

复制代码 代码如下:

在app/Resources/views目录下暗许会有多少个base.html.twig

Twig:

      为了让Symfony的平安组件使用FOSUserBundle,必须告诉它在security.yml文件中如此做。该security.yml文本是富含应用程序基本安全布署的任务。

php app/console generate:bundle –namespace=Blogger/BlogBundle
–format=yml

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>{% block title %}Welcome!{% endblock %}</title>
        {% block stylesheets %}{% endblock %}
        <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
    </head>
    <body>
        {% block body %}{% endblock %}
        {% block javascripts %}{% endblock %}
    </body>
</html>
{# app/Resources/views/base.html.twig #}
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>{% block title %}Test Application{% endblock %}</title>
  </head>
  <body>
    <div id="sidebar">
      {% block sidebar %}
      <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/blog">Blog</a></li>
      </ul>
      {% endblock %}
    </div>
    <div id="content">
      {% block body %}{% endblock %}
    </div>
  </body>
</html>

      澳门金沙国际 7

运维后一向利用具有的暗许设置即可。 能够便宜地创设我们所需求的为主要控制制器,
模块与模板等。 包罗了下边包车型客车一言一行:

下一场将协调的模板文件三番五次此

PHP代码格式:

      第五步:需要在config.yml配置FOSUserBundle

注册Bundles

{% extends '::base.html.twig' %}

{% block title %}My cool blog posts{% endblock %}

{% block body %}
    {% for entry in blog_entries %}
        <h2>{{ entry.title }}</h2>
        <p>{{ entry.body }}</p>
    {% endfor %}
{% endblock %}
<!-- app/Resources/views/base.html.php -->
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title><?php $view['slots']->output('title', 'Test Application') ?></title>
  </head>
  <body>
    <div id="sidebar">
      <?php if ($view['slots']->has('sidebar')): ?>
        <?php $view['slots']->output('sidebar') ?>
      <?php else: ?>
        <ul>
          <li><a href="/">Home</a></li>
          <li><a href="/blog">Blog</a></li>
        </ul>
      <?php endif; ?>
    </div>
    <div id="content">
      <?php $view['slots']->output('body') ?>
    </div>
  </body>
</html>

      澳门金沙国际 8

在symfony中颇具应用的bundles都须要先被登记,
有个别bundles只会使用于开发测试环境(dev or test), 如前文提及的开发工具条.
上面那断代码突显了bundles创设命令怎么着注册BloggerBlogBundle那一个bundle.

::base.html.twig表示此文件放在app/Resources/view目录下

其一模板定义了着力的HTML伊始文书档案是一个简单的两列式页面。在那几个页面中有三处{%
block
%}定义,分别定义了title,sidebar和body。各样block都足以被三番五次它的子模板重写只怕封存它未来的暗许完结。该模板也能被间接渲染,只不过只是突显基础模板的概念内容。

      在config.yml空白区域布局fos_user告诉它用户类是orm类型的,防火墙的名称是main,用户的类是user。那样访问的时候才知晓接纳正确的途径。

// app/AppKernel.php
class AppKernel extends Kernel {
public function registerBundles() {
$bundles = array(
// ..
new Blogger\BlogBundle\BloggerBlogBundle(),
);
// .. return $bundles; } // ..
}
}

注:{% extends
%}必须放在第②行,当使用{% block body
%}时,body那个块中保有都被掩盖,若想保留用parent()函数例:

下边定义贰个子模板:

    第④步:在routing.yml 添加FOSUserBundle路由文件

路由

{% block body %}

Twig格式:

      澳门金沙国际 9

用作二个框架, 路由成效被bundler成立器创制于app/config/routing.yml,
symfony是用yml格式来保存配置消息。

<h3>This is childContent</h3> …

{# src/Acme/BlogBundle/Resources/views/Blog/index.html.twig #}
{% extends '::base.html.twig' %}
{% block title %}My cool blog posts{% endblock %}
{% block body %}
  {% for entry in blog_entries %}
    <h2>{{ entry.title }}</h2>
    <p>{{ entry.body }}</p>
  {% endfor %}
{% endblock %}

      到次配置FOSUserBundle用户登陆验证算是马到成功。当然为了便利咱们能够配备新的沙盘覆盖原来的。新模板的陈设方式如下:

复制代码 代码如下:

{{ parent() }}

澳门金沙国际,PHP代码格式:

      在app/Resources/下创办FOSUserBundle/views/layout.html.twig暗中同意文件。在layout.html.twig模板的同级目录创制

# app/config/routing.yml
BloggerBlogBundle:
resource: “@BloggerBlogBundle/Resources/config/routing.yml”
prefix: /

{% endblock %}

<!-- src/Acme/BlogBundle/Resources/views/Blog/index.html.php -->
<?php $view->extend('::base.html.php') ?>
<?php $view['slots']->set('title', 'My cool blog posts') ?>
<?php $view['slots']->start('body') ?>
  <?php foreach ($blog_entries as $entry): ?>
    <h2><?php echo $entry->getTitle() ?></h2>
    <p><?php echo $entry->getBody() ?></p>
  <?php endforeach; ?>
<?php $view['slots']->stop() ?>

      澳门金沙国际 10

prefix前缀选项允许大家得以将其放置于如blog、news等子目录下。
文件
而外上述配置文件外, 其他超过二分一文书生成为src目录下, 仿佛大多数mvc框架。
在src下生成Blogger目录,
并有BlogBundle子目录存放着种种相关东东。不一致的是相近于blogger的目录对应着php命名空间。

三 、模版不相同命名方式的蕴藏路径:

父模板被一个奇异的字符串语法表示 ::base.html.twig ,它象征该模板在项目标app/Resources/views 目录下。

      当然也能够直接从品类的vendor\friendsofsymfony\user-bundle\Resources\views下直接copy过去。

暗许控制器

AcmeBlogBundle::layout.html.twig:那个语法钦赐了二个AcmeBlogBundle的主干模板。因为中间部分“controller”被忽略了(如Blog),模板路径位于AcmeBlogBundle中的Resources/views/layout.html.twig

模板继承的第③字 {% extends %}标签。
该标签告诉模板化引擎首先评估父模板,它会设置布局和定义多少个blocks。然后是子模板,上例中父模板中定义的title和body
三个blocks将会被子模板中的定义所代替。依靠blog_entries的值,输出的始末如下:

      澳门金沙国际 11

Bundle生成器在src下面生成了私下认可了控制器。 通过走访:
能够看到简单的致敬。
关于那几个页面是什么转移:

::base.html.twig:那几个语法钦点了一个应用程序范围的模版或布局。注意该字符串由五个冒号(::)开端,意思是bundle和controller部分被忽视。那意味该模板没有放在任何Bundle之中,因而它应有放在app/Resources/views/目录中

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>My cool blog posts</title>
  </head>
  <body>
    <div id="sidebar">
      <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/blog">Blog</a></li>
      </ul>
    </div>
    <div id="content">
      <h2>My first post</h2>
      <p>The body of the first post.</p>
      <h2>Another post</h2>
      <p>The body of the second post.</p>
    </div>
  </body>
</html>

      配置实现后能够一直在域名后输入login、register进行登录注册。

路由

四 、模版包罗

在此大家注意到,因为子模板中尚无定义sidebar这几个block,所以来自父模板的内容被展现出来,而没有被子模板替代。位于父模板中的{%
block %}标签是私下认可值,假诺没有被子模板重写覆盖,它将用作暗许值使用。

       实体配置格局上篇博客中早已说过,那里就不再提了。希望可以帮到须要的人。

抑或路由, 分歧的是目前的路由是在一切程序里面注册使用,
那里的路由是控制具体页面使用,
src/Blogger/BlogBundle/Resources/config/routing.yml
控制了BloggerBlogBundle, 包罗以下顺序片断:

(1)多个模板文件中带有此外的模板文件

您能够依照你的内需展开多层继承。
Symfony2项目中一般选拔一种三层继承形式来组织模板和页面。当大家采纳模板继承时,要求留意:

      澳门金沙国际 12

复制代码 代码如下:

{% include ‘AcmeArticleBundle:Article:articleDetails.html.twig’ with
{‘article’: article} %}

尽管在模板中接纳{% extends %},那么它必须是模板的首先个标签。

      每一天都想写博客,但却不晓得写什么,有怎样想要了然的,能够下评论区留言,笔者抽时间写下。

# src/Blogger/BlogBundle/Resources/config/routing.yml
BloggerBlogBundle_homepage:
pattern: /hello/{name}
defaults: { _controller: BloggerBlogBundle:Default:index }

尽管with四个参数可以{‘foo’:foo, ‘bar’:bar}

你基础模板中{% block
%}越多越好,记住,子模板不必等一父模板中持有的block。你父模板中block定义的愈多,你的布局就越灵活。

       

参数: 举行url检查和测试, 符合/hello/{name}结构的任意值将被赋予给{name},
办法: 没有对情势展开界定, 理论可以put, get, post,
delete所有的操作都得以进行。
继续: 如若符合以上两条, 那么{name}将会传导至特定文件,
以上为src/Blogger/BlogBundle/Controller/DefaultController.php文件中的default控制器的index行为将被采纳。

(2)3个模板文件包括其余2个控制器的结果

若是您发觉在八个模板中有再次的剧情,那或然就代表你供给为该内容在父模板中定义一个{%
block
%}。有些时候更好的消除方案或许是把这几个剧情放到四个新模板中,然后在该模板中include它。

 

控制器

{% render “AcmeArticleBundle:Article:recentArticles” with {‘max’: 3} %}

万一你须要从父模板中收获八个block的剧情,你能够使用{{ parent() }}函数。

 

在暗中同意生产的bundler中, 控制器行为一定不难,
{name}参数被流传并被传出到模板文件:

注:两者分别在于include是将参数article传给了articleDetails.html.twig中的article参数,而render是将max参数字传送给了recntArticle那个控制器

{% block sidebar %}
  <h3>Table of Contents</h3>
  ...
  {{ parent() }}
{% endblock %}

 

// src/Blogger/BlogBundle/Controller/DefaultController.php
namespace Blogger\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
public function indexAction($name)
{
return $this->render('BloggerBlogBundle:Default:index.html.twig', array('name' => $name));
}
}

五 、其余援救函数

模板的命名和仓库储存地点

 

BloggerBlogBundle:Default:index.html.twig 会使用 BloggerBlogBundle
views文件夹中 Default文件夹上面index.html.twig模板文件.

(1)依据路由名生成url链接:

默许情状下,模板能够被保留到三个职分:

 

模板文件

转移绝对路径:<a href=”{{ path(‘article_show’, { ‘slug’:
article.slug }) }}”>

app/Resources/views
目录下,能够存放整个应用程序级的底蕴模板以及那一个重写bundle模板的模版。

 

开拓上述模板文件, 相当简单的一句代码:

变动相对路劲:<a
href=”{{ url(‘homepage’) }}”>Home</a>

path/to/bundle/Resources/views
目录下,各类bundle本人的沙盘。

 

{# src/Blogger/BlogBundle/Resources/views/Default/index.html.twig #}
Hello {{ name }}!

在php模版中用<a href=”<?php echo
$view[‘router’]->generate(‘homepage’, array(), true)
?>”>Home</a>(symony第11中学是运用url_for)

Symfony2使用bundle:controller:template
字符串语法表示模板。那足以象征许多不一品类的模版,种种都存放在特定的路线下:
AcmeBlogBundle:Blog:index.html.twig 用于内定3个特定页面包车型地铁沙盘。
AcmeBlogBundle
代表bundle,表明模板位于AcmeBlogBundle,比如src/Acme/BlogBundle。
Blog
表示BlogController,钦定模板位于Resourcs/views的Blog子目录中,index.html.twig为模板名字。

 

以上正是symfony的万事mvc流程, 这么多文本的效用只是出口1个 “hello
world”. 理论上不用bundler成立器,
只是手动创立上述文件也得以完毕平等功效。开销的年月就多了去了。

(2)连接向css、js、iamge等资源:

假诺AcmeBlogBundle位于src/Acme/BlogBundle,
最终的路线将是:src/Acme/BlogBundle/Resources/views/Blog/index.html.twig

    

回到正题, 大家是创造博客系统, 所以不必要 hello world,

<img src=\’#\'” asset(‘images/logo.png’) }}” alt=”Symfony!” />

AcmeBlogBundle::layout.html.twig
该表示法指向AcmeBlogBundle的基模板。没有controller部分,所以模板应该放在AcmeBlogBundle的Resources/views/layout.html.twig

 

1.移除控制器 src/Blogger/BlogBundle/Controller/DefaultController.php
2.移除模板 src/Blogger/BlogBundle/Resources/views/Default/
3.最后移除路由 src/Blogger/BlogBundle/Resources/config/routing.yml
成套世界寂静了。

<link href=”{{ asset(‘css/blog.css’) }}” rel=”stylesheet”
type=”text/css” />

::base.html.twig
表示二个使用程序级的基模板或然布局文件。注意,该语句四个冒号开首,意味着没有bundle和controller部分,那注明该公文不在有些bundle中,而是放在根目录下
app/Resources/views

③ 、让大家初阶创立博客的主页

引:asset函数的关键目标是将您的应用程序更便于移植。要是您的应用程序在你主机的根目录下(如:

在重写Bundle模板一节,你将发现位于AcmeBlogBundle的模版是什么样被放在app/Resources/AcmeBlogBundle/views/目录下的兼具模板同名重写的,
这种艺术给了大家3个强硬的途径来重写供应商提供的bundle的模版。

Twig的优点

(3)配置和选取模版引擎:

模板后缀(suffix)

在symfony中大家能够应用
Twig和php(这不是废话嘛)作为模板。使用Twig的以下优点:

安插和行使模板服务

bundle:controller:template
句法表明了各样模板文件的存放位置。每种模板名字也有多少个扩充名来钦命格式和模板引擎。
AcmeBlogBundle:Blog:index.html.twig HTML格式,Twig引擎
AcmeBlogBundle:Blog:index.html.php HTML格式,PHP引擎
AcmeBlogBundle:Blog:index.css.twig CSS格式,Twig引擎
私下认可意况下,Symfony2的别样模板都得以被写成Twig或许PHP引擎的,它由后缀决定。个中后缀的前一部分(.html,.css)表示最后生成的格式。

  1. 快: 是编绎过的php类, 能够占据更少的能源

  2. 简短:想想看要打<?php ?>, Twig输入的剧情要少很多。

  3. 可继续: 格外cool的1个成效

  4. 安全: 转义功用默许开启, 甚至仍是能够为机要代码提供沙盒效率。

  5. 可扩充: 要求额外的定制效用, 可以随时扩大

在Symfony第22中学模板系统的为主是模板引擎。那一个一定的对象承担渲染模板并再次回到它的剧情。当您在控制器中渲染三个模板时,举个例子,你实际是在运用模板引擎服务。如:

标签和帮手类

越多内容, 请移步:

return $this->render(‘AcmeArticleBundle:Article:index.html.twig’);

您早就基本精通了模版,它们怎么着命名如何行使模板继承等。最难通晓的一对已经过去。接下来大家将驾驭大量的可用工具来帮忙大家执行最通用的模板职分比如含有别的叁个模板,链接二个页面或然隐含1个图形等。

可延续是三个不行好的亮点, 大家将利用三级继承结构来定制这一个模板,
那将同意大家在多少个不等层级修改模板, 方便随意定制。

等同于

Symfony第22中学涵盖了血多类别化的Twig标签和效应函数来救助设计者更便于的达成工作。在PHP中,模板系统提供了1个可扩大的helper系统,它能够在模板上下文中提供许多得力的始末。大家已经看过部分内建的Twig标签,比如{%
block %}{% extends %}等,还有PHP 帮手$view[‘slots’]。

主模板–level 1

$engine = $this->container->get(‘templating’); $content =
$engine->render(‘AcmeArticleBundle:Article:index.html.twig’); return
$response = new Response($content);

含有其余模板:

<!– app/Resources/views/base.html.twig –>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset=utf-8" />
<title>{% block title %}symfony{% endblock %} – blog</title>
<!–[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]–>
{% block stylesheets %}
<link href='http://fonts.googleapis.com/css?family=Irish+Grover' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=La+Belle+Aurore' rel='stylesheet' type='text/css'>
<link href="{{ asset('css/screen.css') }}" type="text/css" rel="stylesheet" />
{% endblock %}
<link rel="shortcut icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
<section id="wrapper">
<header id="header">
<div>
{% block navigation %}
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
{% endblock %}
</div>
<hgroup>
<h2>{% block blog_title %}<a href="#">symfony</a>{% endblock %}</h2>
<h3>{% block blog_tagline %}<a href="#">creating a blog in Symfony2</a>{% endblock %}</h3>
</hgroup>
</header>
<section>
{% block body %}{% endblock %}
</section>
<aside>
{% block sidebar %}{% endblock %}
</aside>
<div id="footer">
{% block footer %}
<a href="http://blog.dengruo.com/201309/1409">Symfony2 博客教程</a>
{% endblock %}
</div>
</section>
{% block javascripts %}{% endblock %}
</body>
</html>

模板引擎(或“服务”)被预配置成在Symfony第22中学活动工作。当然它可以在应用程序配置文件中布局。

你只怕时时想在五个不等的页面中富含同3个模板可能代码片段。比如三个应用程序中有”新闻文章”,模板代码在彰显一片小说时大概用到小说详细页面,三个实际最流行小说的页面,或许1个新颖篇章的列表页面等。

上边代码在引入了三个js文件, 在ie9版本前的浏览器中落实html,
以及多少个css文件导入google fronts.
那构成了网页的要害内容结构, 也就是drupal的html.tpl.php+page.tpl.php.
让我们看一下头顶文件

# app/config/config.yml framework: # … templating: { engines:
[‘twig’] }

当你需求选定一些PHP代码,你平凡都以把那一个代码放到一个PHP类可能函数中。同样在模板中你也能够那样做。通过把可选取的代码放到2个它和谐的模版中,然后把那些模板蕴含到任何模板中。比如大家创制三个可选取模板如下:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图