0

我有一个函数需要从 URL 中提取参数,就像 CI 应该做的那样。但它没有这样做。我的网址是 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”。那么为什么这不起作用呢?函数中的参数顺序正确,所以我看不出有什么问题。

4

2 回答 2

1

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

如果你去domain.com/lasers/en/acme它正在lasers控制器中寻找一个名为en.. 的方法(它不存在)并尝试将单个参数传递acme给它

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

将这样的内容添加到您的config/routes.php

$route['^lasers/(:any)/(:any)'] = "lasers/get_products/$1/$2";

然后使用这样的方法而不是index

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

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

于 2011-08-12T07:34:59.587 回答
0

如果您编写“domain.com/lasers/index/en/acme”,它会起作用吗?

如果您编写 domain.com/lasers/en/acme,它将查找“En”函数,$lang 为“acme”,并且 $laser 保持为 NULL。

于 2011-08-12T00:13:02.403 回答