让我们说我们有以下网址, http://www.example.com/controllerName/methodName/param1/param2/param3 在上面的url param1中,param2,param3是将传递给控制器方法' methodName'的参数。
现在我只想知道从url和
传递函数参数背后的逻辑第二件事是如何使用像codeigniter这样的控制器方法参数来映射来自url的参数段数?
答案 0 :(得分:0)
如果参数数量有限,比如3或4,那么你可以将它们从路径映射到控制器方法,如
$route['controllerName/methodName/(:any)/(:any)/(:any)'] = 'controllerName/methodName/$1/$2/$3';
现在你的控制器方法可以接受3个参数
function methodName($param1,$param2,$param3) {
echo $param1,' ',$param2,' ',$param3;
}
如果参数的数量比uri类长,可以帮助您获取所有参数,并且您的路径应该是智能的,将所有参数发送到该控制器方法,如下所示
$route['controllerName/methodName/(.+)'] = 'controllerName/methodName';
控制器方法就像
function methodName(){
//you will get all segments in an array
$segments = $this->uri->segment_array();
//get just one segment
$segment = $this->uri->segment(1);
}
有关更多信息,请阅读uri类和路由文档
https://www.codeigniter.com/user_guide/libraries/uri.html https://www.codeigniter.com/user_guide/general/routing.html
答案 1 :(得分:0)
Codeigniter有一个自动加载的uri助手,您可以在控制器中使用它$this->uri->segment(/*segment #*/)
现在uri段以作为控制器的段1($this->uri->segment(1)
)开始,第二个是方法您的控制器($this->uri->segment(2)
),第三个是您要发送给方法的值($this->uri->segment(1)
)。你可以传递任意数量的段。您可以使用/
分隔来计算它。恩。 http://localhost/ci/controller(1)/method(2)/value1(3)/value2(4)/value3(5)/valueb(n)