dilicms后台post原理

刚接触一个基于CodeIgniter(以下简称CI)的cms–dilicms,虽然这个只有后台功能,但是对我理解CI应该会有不小的帮助。

在后台提交一个form表单的时候,发现dilicms木有提交到当前那个函数下,而是提交到了原函数名的扩展上,比如这样的一个form表单

<div><form action="http://localhost/dili/index.php/admin/setting/site?tab=site_basic"  method="post"></div>
按照CI的路径规则,这个表单应该提交到setting控制层的site函数中,通过site函数来处理提交过来的表单,但是,事实上并不是这样的,在控制层直接执行了_site_post()这个函数了。于是把整个CI从index.php页面一步一步往下查看代码,最终发现是dilicms的左右调用了CI的hooks,调用方法如下:
/*
 * ------------------------------------------------------
 *  Is there a "pre_controller" hook?
 * ------------------------------------------------------
 */
 $EXT->_call_hook('pre_controller');

所以在执行调用方法前,通过这个hooks改变了method的值,这个hooks代码如下:
class MethodHook {

 //var $ci ; //maybe useful later

 function __construct()
 {
 //$this->ci = &get_instance();
 }

 function redirect()
 {
 global $method;
 if( $_SERVER['REQUEST_METHOD'] == 'POST' )
 {
 $method = '_'.$method.'_post';
 }
 }

 }

从而,每次当有数据post的过来,原来的操作函数就被换掉了。

暂时还不明白这样做的好处,但是dilicms还得研究下去,慢慢摸索中。。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值