Codeigniter - 如何在控制器函数内获取url变量值?

时间:2015-09-14 16:33:52

标签: php codeigniter model-view-controller codeigniter-2

我有这样的网址:http://localhost/sitename/some-post-title/code=24639204963309423

现在我的控制器文件中有一个findUser函数

public function findUser() {
   // I have tried with $_GET['code']
}

我试图在此函数中获取code变量值。我尝试过使用$_GET['code']但没有效果。

任何想法如何在控制器功能中获得价值?

感谢。

2 个答案:

答案 0 :(得分:4)

您是否尝试获取路径段变量或GET变量?看起来你要两者兼得。

在CI中,如果您更新网址,则可以使用$this->input->get

http://localhost/sitename/some-post-title/?code=24639204963309423

(注意问号)。

或者,您可以修改您的网址,使其如下所示

http://localhost/sitename/some-post-title/code/24639204963309423

然后使用像这样的URI段

$data = $this->uri->uri_to_assoc();
$code = $data['code'];

如果您不想更改网址,则必须手动中断该字符串

$data = $this->uri->segment(3);
$data = explode($data, '=');
$code = $data[1];

我认为第二种选择是最友好和最漂亮的解决方案。但是每个都应该在功能上相同。

答案 1 :(得分:1)

如果您的URI包含两个以上的段,它们将作为参数传递给您的函数。

例如,假设你有一个像这样的URI:

example.com/index.php/products/shoes/sandals/123

您的函数将传递URI段3和4("凉鞋"和" 123"):

<?php
class Products extends CI_Controller {

    public function shoes($sandals, $id)
    {
        echo $sandals;
        echo $id;
    }
}
?> 

如果您使用GET获取参数,可以这样做:

$this->input->get('get_parameter_name'); 

通常,URL字符串与其对应的控制器类/方法之间存在一对一的关系。 URI中的段通常遵循以下模式:

example.com/class/function/id/

控制器的详细信息查找hereGET查找here