Codeigniter Logic用于从URL段传递函数参数

时间:2017-04-21 21:04:36

标签: php codeigniter codeigniter-2 codeigniter-3

让我们说我们有以下网址, http://www.example.com/controllerName/methodName/param1/param2/param3 在上面的url param1中,param2,param3是将传递给控制器​​方法' methodName'的参数。

现在我只想知道从url和

传递函数参数背后的逻辑

第二件事是如何使用像codeigniter这样的控制器方法参数来映射来自url的参数段数?

2 个答案:

答案 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)