2017-04-21 74 views
0

比方说,我们有以下的url, http://www.example.com/controllerName/methodName/param1/param2/param3 在上述URL的param1,参数2,参数3是其将被传递到控制器的方法“方法名”参数。笨逻辑用于从URL段传递函数参数

现在,我只是想知道背后的逻辑,从URL传递函数的参数和

的第二件事是如何参数段的数量从URL中包含笨控制器的方法参数映射?

+0

https://www.codeigniter.com/user_guide/libraries/uri.html – user4419336

+0

https://www.codeigniter.com/user_guide/general/routing.html – user4419336

回答

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

+0

我建立自定义的MVC框架。所以我在寻找代码如何通过URL段作为函数参数的逻辑。 –

+0

不要重新发明轮子,如果你正在开发一些不同于任何其他php框架的东西,那么我已经开发了框架,而不是我能理解你的需求。 – umefarooq

0

笨有一个自动加载的URI助手,你可以在控制器使用$this->uri->segment(/*segment #*/)现在uri段的第一段是控制器($this->uri->segment(1)),第二段是您的con的方法troller($this->uri->segment(2))第三个是你想发送给该方法的值($this->uri->segment(1))。您可以根据需要传递尽可能多的细分。你可以用/来分开计算。恩。 http://localhost/ci/controller(1)/method(2)/value1(3)/value2(4)/value3(5)/valueb(n)