2009-04-17

Symfony的路由规则

类归于: symfony — 标签:zhuozi @ 12:17

自己接触的框架算来算去也就Zend和symfony,虽然量级不同,不过有一点都挺好,路由规则的设定。

为什么说好呢?网站做出来就是要被放到互联网上嘛,影响网站点击率的除了网站内容,还有一个很重要的原因就是搜索引擎,

而URL对于搜索引擎来说是判别一个网站权重值的一个指标。

原本这样的URL
www.123.com/search?category=ball
利用路由规则
show_shop_search_category:
url: /search/:category
param: { module: shop ,action:search }

变成了
www.123.com/search/ball

在Symfony中,你可以根据需求随意的设定路由规则,可以在规则中强制写一些动作,利用正则限制要传的参数等等。
感觉这部分的内容很碎,具体问题具体分析,总之可以利用routing.yml这个文件写出对搜索引擎友好的url。

2009-04-15

CSRF使用注意事项和form的标准用法

类归于: symfony — 标签:, maker @ 13:17

我在<开启symfony的CSRF保护>一文中简单的介绍了CSRF的概念和使用方法, 由于那篇文章是学习symfony的初期写的, 所以对form和csrf理解的还不够透彻, 通过之后的学习和研究又渐渐的了解了一些细节.

首先, 在form被正确的应用的情况下, csrf是完全可以被兼容的, 这里先简单讲一下自定义的form的注意事项.

在定义form的时候, 我们需要定义名字格式, symfony自动生成的form应该已经设定了格式,不再需要重新设置

class CityForm extends BaseCityForm{
...
function setup()
{
...
$this->widgetSchema->setNameFormat('city[%s]');
...
}
...
}

这样我们将form中所有元素的值都放到了一个Parameter的子数组中.接下来在取得表单值的时候需要使用如下方法.

$this->form->bind($request->getParameter($this->form->getName()));
if($this->form->isValid()){
...
}else {
...
}

这样避免了手动构造bind的参数,也避免了在bind的参数中出现多余字段的问题,而且还可以完全兼容csrf,这也正是官方生成的代码所使用的方法。

本文完。

2009-04-08

symfony1.2的后台(generate-admin)模板结构

类归于: symfony — 标签:, , , maker @ 17:24

这里所指的后台模块是指由propel:generate-admin生成的后台管理模块,在symfony中可以自动生成一套强大的管理后台,并且可以订制或者重写模块中的动作或者模板,这里我们简单介绍一下模板的组成结构。

比如我们要给Test对象生成一套管理后台,那么我们使用命令

./symfony propel:generate-admin backend Test --module=test

然后我们访问backend/test, 这样你会看到一个自动生成的管理页面, 其程序在cache/app_name/env_name/modules/autoMudule/ 目录下. 我们这里主要分析模板目录templates, symfony1.2生成了以下的模板

indexSuccess.php # 列表页

_assets.php # 载入样式和脚本
_flashes.php # 消息框
_list_header.php # 页首
_list.php # 列表

_list_td_stacked.php
_list_th_stacked.php
_list_th_tabular.php # 列标题
_list_td_batch_actions.php # 复选框
_list_td_tabular.php # 一条记录

_list_field_boolean.php # boolean类型的表示方式

_list_td_actions.php # 对象操作

_list_batch_actions.php # 批量操作

_pagination.php # 分页条
_list_actions.php # 操作, 新建等
_filters.php # 过滤器

_filters_field.php # 过滤器中的一项

_list_footer.php # 页尾

newSuccess.php # 新建页
editSuccess.php # 编辑页和新建页用了同一种结构

_assets.php # 载入样式和脚本
_flashes.php # 消息框
_form.php # 表单

_form_fieldset.php # 一组表单项

_form_field.php # 一个表单项

_form_actions.php # 操作, 提交, 取消等
_form_footer.php # 页尾

上面的缩进代表了调用关系, 为了更直观的表现出模板的结构, 做了下面两个图片

图1, 列表页的组成

index

图2, 新建和修改页的结构

new

本文完.

2009-04-07

版本控制工具GIT的使用(二)主机打补丁

类归于: Git — 标签:zhuozi @ 12:26

上一篇的GIT文章,介绍了在自己的机器上打补丁的方法(即分机打补丁),大家做的东西总归是要合并在一起的嘛,不管需要与否,我们还是了解一下,比较好。(下述方法,可能不适用于所有情况,只是针对我们的操作进行讲解)
我们的工作环境是在Ubuntu下面。

在自己的机器上
sftp root@192.168.1.1 //链接到局域网的服务器
put /home/zhuozi/project/0001-hello.patch /home/project/ //把你要打的补丁上传到服务器上

maker: 这里可以使用scp命令来完成两台主机间的文件传输,上面的动作可以写成
scp ~/project/0001-hello.patch root@192.168.1.1:/home/project/

进入服务器项目的所在目录
git apply --check 0001-hello.patch //检查补丁是否正确
git apply 0001-hello.patch //如果补丁正确,应用此命令打补丁

git status //在服务器上查看需要补丁修改过的文件
git commit //在服务器上把修改的文件提交

这样服务器上面的补丁就打好了

WordPress 所驱动