ci钩子:将地址段解析为GET传值
ci钩子:可将path_info传值转为GET传值,并且method的参数也通过GET来传递用途:接收SEO友好的地址传值。
$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]