Codeigniter未从URL获取参数

Codeigniter未从URL获取参数,codeigniter,codeigniter-url,Codeigniter,Codeigniter Url,我有一个函数,需要像CI应该做的那样从URL中提取参数。但它没有这样做。我的URL是domain.com/lasers/en/acme 我的课程是: class Lasers extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('products_model'); $this->lo

我有一个函数,需要像CI应该做的那样从URL中提取参数。但它没有这样做。我的URL是domain.com/lasers/en/acme

我的课程是:

class Lasers extends CI_Controller {

    function __construct()
    {
        parent::__construct();

        $this->load->model('products_model');
        $this->load->model('common_model');
        $this->load->model('select_country_model'); 
        $this->load->model('markets_materials_model');  
    }


function index($lang = NULL, $laser = NULL) 
{   
    $query = $this->products_model->get_product_content($laser, $lang);
}
模型加载到构造函数中。我需要的$lang是“en”,而$laser是“acme”。那么这为什么不起作用呢?函数中的参数顺序正确,因此我看不出有什么问题。

如果您编写“domain.com/lasers/index/en/acme”是否有效


如果您编写domain.com/lasers/en/acme,它将查找“en”函数,$lang为“acme”,而$laser为空。

默认情况下,您不能将参数传递给控制器的
索引方法

如果您访问
domain.com/lasers/en/acme
,它将在
lasers
控制器中查找名为
en
的方法。。(不存在)并尝试向其传递单个参数
acme

有一些解决方案,可能最简单的是使用不同的方法(不是索引),然后使用路由使URL工作

将类似的内容添加到
config/routes.php

$route['^lasers/(:any)/(:any)'] = "lasers/get_products/$1/$2";
然后使用这样的方法而不是
索引

function get_products($lang = NULL, $laser = NULL) {   
    $query = $this->products_model->get_product_content($laser, $lang);
}

。。或者您可以使用覆盖默认行为

当您通过“domain.com/lasers/en/acme”访问时,它会给出哪个错误?它是否进入索引功能?您是否使用任何CI路由?如何访问此路由?你的url是什么?另外,你是否在
config/routes.php
中对路由文件进行了更改?嗨,这是“starts with”的正则表达式,以防出于某种原因,你有一个名为“biglasers”或“my_lasers”的控制器,使其与那些控制器不匹配