用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1845|回复: 1
收起左侧

[其它 Other] ci钩子:将地址段解析为GET传值

[复制链接]
发表于 2016-8-25 17:19:25 | 显示全部楼层 |阅读模式
ci钩子:可将path_info传值转为GET传值,并且method的参数也通过GET来传递
用途:接收SEO友好的地址传值。
PHP复制代码
 
$hook['pre_controller']=function(){
    global $params,$RTR;
    if(!$params)return;
    $_GET+=$RTR->uri->ruri_to_assoc();
    $rel=new ReflectionMethod($RTR->class,$RTR->method);
    $params=array();
    if($args=$rel->getParameters())
    {
        foreach($args as $arg)
        {
            if(isset($_GET[$arg->name]))
            {
                $params[$arg->name]=$_GET[$arg->name];
        }
    }
        }
        unset($cls,$rel);
};
复制代码


例:
class Demo extends CI_Controller
{
    function ctrldemo($arg1)
    {
       echo 'arg1='.$arg1;               
       print_r($_GET);
    }
}
访问地址:
/demo/ctrldemo/test/1/arg1/2/pn/1.html
/demo/ctrldemo.html?test=1&arg1=2&pn=1
输出:
arg1=2
array(
  'test'=>1,
  'arg1'=>2,
  'pn'=>1
)

注:使用之后传统的method传值方式将不可用,下面地址将会报错
/demo/ctrldemo/2
不会得到输出:
arg1=2
必须要
/demo/ctrldemo/arg1/2
如果有多个参数(包括get参数)则arg1的顺序不一定要放在第一位

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

本版积分规则