用于将get参数传递给索引函数的Codeigniter路由

时间:2014-11-29 17:53:54

标签: php codeigniter

我有一个网址www.mywebsite.com/store/123456

其中store是我的控制器类,我有一个索引函数,其中我在商店之后得到了值,即123456.但是我无法实现它。

如在网上找到的那样,我尝试将其添加到路由$route['store/(:any)'] = 'store/index';也尝试了

$route['store/(:any)'] = 'store/index/$1';

但似乎没有用。请帮帮我。

在控制器索引功能中

public function index()
    {
        echo $this->uri->segment(1);
    }

但它不起作用.Pleae帮助

4 个答案:

答案 0 :(得分:2)

您正在调用123456()方法而不是index()方法,因此您获得了CI 404.

最简单的方法是使用这种路线

$route['store/(:any)'] = 'store/index/$1';

在它的顶部添加参数到你的情况下的索引函数

public function index($parameter)
{

    echo $this->uri->segment(2);
}

请注意,我更改了细分参数,请参阅documentation


使用_remap()

function _remap($parameter){

   $this->index($parameter);
}

function index($p) 
{
    echo $p; //shows 123456 
}

答案 1 :(得分:0)

如果我没记错的话:

段(n)在路由发生之前为您提供uri的片段

rsegment(n)为您提供路由后的uri段(如果路由发生或与段相同,如果它没有)

所以/ store / 123456被重新路由到/ store / index / 123456

segment(1) == rsegment(1) == 'store'
              rsegment(2) == 'index'
segment(2) == rsegment(3) == '123456'

答案 2 :(得分:0)

路线:

$route['terms_and_conditions'] = 'SO_front/page/1';

控制器:

public function page($id)
    {
        echo $id;
    }

输出: 1

答案 3 :(得分:0)

这里是我针对CI3的解决方案...我更喜欢laravel进行高级路由,orm,restapi,在vuejs中构建。

$route['store/(:any)'] = 'store/index/';

public function your index(){
    $parameter=$this->uri->segment(2);
    //use parameter for sql query.
}

先说您的路线$route[store/product/update/(:any)],然后说$parameter=$this->uri->segment(4)

问题?。如果您打算更改路径名称(包括视图,控制器和自定义路径),则需要更改整个文件代码。