从Django看CakePHP模板技术的弊端

作者:老王

CakePHP的模板技术基本上沿用了Rails的方式,也使用了layout技术( 链接),子模板的内容会替换layout中的$content_for_layout变量。这样的方式很简单,但它也有很多弊端,比如说title的渲染是由layout中的$title_for_layout变量负责的,通常CakePHP程序员是通过在Controller里使用$this->pageTitle的方式来设置title的,但是因为title的内容会涉及很多显示逻辑(比如为了SEO),所以在Controller里设置title是丑陋的,同样的情况也会出现在诸如meta等情况里。

下面看看Django里的视图技术( 链接):

{% extends "base_generic.html" %}
{% block title %}{{ section.title }} {% endblock %}
{% block content %}
<h1>{{ section.title }}</h1>
{% for story in story_list %}
<h2>
<a href="{{ story.get_absolute_url }}">
    {{ story.headline|upper }}
</a>
</h2>
<p>{{ story.tease|truncatewords:"100" }}</p>
{% endfor %}
{% endblock %}

Django的模板同样很简单,即使你不了解Django的语法也能大概猜出上面代码的意思。这里extends的作用其实就是layout的作用,在父模板里有若干个block,在子模板里也有若干个block,子模板里的block可以覆盖(也可以不覆盖)父模板里的block,这样,就不会再有上面提到的title,meta等坏味道了。

换个角度看,CakePHP的模板技术算是Django的一个简化版本,如果你想在CakePHP中实现Django的block功能,可以通过自定义helper来实现,但这毕竟不是内核级实现,多少还是有些不爽。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值