设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 9441|回复: 1
打印 上一主题 下一主题

笔记:几个CakePHP知识点

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-29 02:27:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:老王

下午用CakePHP做了几个页面,发现自己还是不太熟,记录一下:

如何禁止布局?

如果需要禁止布局功能的动作或控制器比较多的话,那么可以在控制器中统一设置autoLayout为false,如果只是个别的模板的话,那么最好是直接在模板文件里设定$this->autoLayout = false,而不要在控制器里设定,毕竟使用布局与否是一个视图逻辑。

视图助手的一些注意事项?

在模板里使用图片的时候,最好是使用助手的方式,如:echo $html->image('pic.gif'),而不是直接手动编写<img>标签,因为如果硬编码的话,一旦网站目录结构出现变化,问题就严重了。同样的情况还出现在链接上,应该使用助手的方式,如:echo $html->url(array('action' => 'foobar'),原因同上。

分页助手一般使用的都是文字链接,但实际上也可以使用图片链接,方法如下:
echo $paginator->prev($html->image('prev.gif', array('border' => 0)), array('escape' => false));
类似的,表单提交按钮如果想使用图片的话,方法如下:
$form->submit(‘pic.gif’)
注意所有文件都被认为是存放在webroot目录下的img文件夹内的。

有时候分页时需要通过URL传递一些查询参数,此时应该在模板文件里按如下设置:
$paginator->options(array('url' => $this->passedArgs));
具体的可以参考文档。

表单助手缺省创建的input会有div包裹,还有label等等修饰,很多时候这和美工设计的页面结构不同,这时:
$form->input('password', array('div' => false, 'label' => false, 'error' => false))

输出记得转义,CakePHP提供了h()方法,很简单,但是总容易忘。

Configure最多支持三级设置。

如果超过三级,比如说Configure::write('A.B.C.D', '...');这样是无效的,做多A.B.C三级。

通过HTTP_X_FORWARDED_FOR得到客户端IP。

如果想通过HTTP_X_FORWARDED_FOR得到客户端IP,必须传递一个false参数:

$this->RequestHandler->getClientIP(false);

也就是说要传递一个false参数,不过这样做仅适合安全性要求不高的应用。

钩子方法afterFilter并不一定会执行。

这是CakePHP的一个硬伤,因为redirect会直接跳转,所以afterFilter有可能会被忽略,这点要注意。

Auth组件缺省设置的弊端?

缺省实现里,提交表单时,如果有password字段,会自动哈希处理,但是有的时候反倒麻烦,比如说添加用户时,如果验证未通过,再显示出错表单时,密码字段已经被哈希了,已经不是初始值了,再提交就不对了,所以为了屏蔽问题,就不应该再使用password字段名,而应该改名,以注册表单为例:
原始密码:<?php echo $form->input('encrypt_password'); ?>
确认密码:<?php echo $form->input('confirm_password'); ?>
这样的话,字段值在提交前后始终保持是初始值,就不会再有问题了。

顺手送几张CakePHP非官方壁纸:http://www.jotlab.com/2009/03/24/cakephp-wallpapers-not-official/

再唠叨一句,CakePHP1.3的开发工作已经开始:http://thechaw.com/cakephp/wiki/1.3

顺手记录一个好网址:

http://wiki.github.com/davidpersson/media/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-17 23:16 , Processed in 0.114680 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表