【问题标题】:Codeigniter - How to get url variable value inside contoller function?Codeigniter - 如何在控制器函数中获取 url 变量值?
【发布时间】:2015-12-10 17:46:22
【问题描述】:

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

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

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

我正在尝试在此函数中获取 code 变量值。我试过$_GET['code'],但没有成功。

知道如何在控制器函数中获取值吗?

谢谢。

【问题讨论】:

  • 你在这里没有通过 GET 传递任何东西。你可以试试$this->uri->segment(3),得到字符串code=...。

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


【解决方案1】:

您是要获取路径段变量还是 GET 变量?看起来你要两者兼而有之。

在 CI 中,如果你更新你的 url 看起来更像,你可以使用$this->input->get

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

(注意问号)。

或者,您可以将 URL 修改为如下所示

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

然后像这样使用 URI 段

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

如果您不想更改 URL,则必须像这样手动分解该字符串

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

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

【讨论】:

    【解决方案2】:

    如果您的 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/
    

    有关控制器的更多详细信息,请参见 here,对于 GET,请参见 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多