Symfony2

controller负责处理每一个进入Symfony2应用程序的请求。实际上,controller把大部分的繁重工作都委托给了其它地方,以使代码能够被测试和重用。当一个controller需要生成HTML,CSS或者其他内容时,它把这些工作给了一个模板化引擎。


PHP框架的设计::;

模板:
  一个模板仅仅是一个文本文件,它能生成任意的文本格式(HTML,XML,CSV,LaTex...)。最著名的模板类型就是PHP模板了,可以被PHP解析的文本文件,它混合了文本和PHP代码

==..使用方法,就是layout clear,然后settemplate

Symfony2包中拥有一种更加强大的模板化语言叫Twig。 它允许你写简洁,可读法模板语言。对页面设计师更友好,在许多方面比PHP模板更加强大


两者有明显的区别,在于:

《?php 以及{{% 的变量方式

        <?php if($data_ary): foreach($data_ary as $_item):?>
                <?php $part = 'part-' . $_item['power_id'];?>
                <tr οnmοuseοver="this.style.backgroundColor='#ffC'" οnmοuseοut="this.style.backgroundColor='#ffF'">
                    <td align="center">&nbsp;</td>
                    <td><img src="/images/admin/open_part.gif" class="openpart" id="<?php echo $part;?>" align="absmiddle" /><?php echo $_item['power_controller']?></td>
                    <td>&nbsp;</td>
                    <td width="13%" align="center"><!--<a href="{*$cf_self_path*}-act_edit_id_{*$item.power_id*}.htm" class="edit">修改</a>--></td>
                    <td width="13%" align="center"><!--<a href="{*$cf_self_path*}-act_del_id_{*$item.power_id*}.htm" class="del" οnclick="return confirm('你确定要删除吗?')">删除</a>--></td>
                </tr>
                <?php if($_item['child']): foreach ($_item['child'] as $_item2):?>
                <tr class="<?php echo $part;?>" οnmοuseοver="this.style.backgroundColor='#ffC'" οnmοuseοut="this.style.backgroundColor='#ffF'">
                    <td align="center"><input type="checkbox" name="idlist[]" value="<?php echo $_item2['power_id'];?>" style="height:15px;" /></td>
                    <td>&nbsp;&nbsp;&nbsp;├ <?php echo $_item2['power_title'];?></td>
                    <td><?php echo $_item2['power_action'];?></td>
                    <td align="center"><a href="<?php echo $this->url_for('power/edit?id=' . $_item2['power_id']);?>" class="edit">修改</a></td>
                    <td align="center"><a href="<?php echo $this->url_for('power/del?id=' . $_item2['power_id']);?>" class="del" οnclick="return confirm('你确定要删除吗?')">删除</a></td>
                </tr>
                <?php endforeach; endif;?>


                <?php endforeach; endif;?>


在这个Twig文件中,定义了三个类型的特别语法

{{...}} : "说某些事“, 打印一个变量或者一个表达式的值到模板。
{%...%} : "做某些事”,控制模板逻辑的标签,它用于执行比如for循环语句等。
{# 这是一个注释 #}, "注释“。

Twig也包含filters,在渲染之前修改内容。下面的语句显示把title变量全部渲染为大型。

Twig模板缓存
  Twig很快。 每个Twig模板被编译到原生的PHP类,它将在运行时被渲染。编译过的类被保存在app/cache/{environment}/twig 目录下并在某些情况下,对整个调试非常有用。当debug模式可用时,一个twig模板如果发生改变将会被自动重新编译。这就意味着你可以在开发过程中随意的修改模板,而不必担心需要去清除内存了。当debug模式被关闭时,你必须手动的清除Twig缓存目录,以便能够重新生成Twig模板。


模板继承让你可以创建一个基础”layout"模板,它包含你的站点的所有通用元素并被定义成blocks。这里的block可以类比为PHP基类的方法。 一个字模板可以继承基础layout模板并重写它任何一个block。

<!-- 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() ?>

模板也是可以继承的。


模板后缀(suffix)
  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)表示最终生成的格式。


http://symfony.com/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值