【问题标题】:Codeigniter Routing using post and get params使用 post 和获取参数的 Codeigniter 路由
【发布时间】:2011-03-24 23:00:21
【问题描述】:

我的 config/routes.php 文件中有以下内容:

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

当访问以下网址时,这将按预期工作:mysite.com/user/id,仪表板控制器中的函数被调用,第一个参数是'user'和第二个'id'。但是,当通过 post 并获取诸如 mysite.com/user/id?page=2 之类的值时,该函数似乎忽略了 post 参数,并且第一个(也是唯一的)参数是 '2'。

我的 config.php 文件具有以下值:


$config[‘uri_protocol’]  = “AUTO”;
$config[‘enable_query_strings’] = TRUE;

和.htaccess:


RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

我的路线状况是否遗漏了什么?

【问题讨论】:

    标签: php codeigniter codeigniter-url


    【解决方案1】:

    这绝对是您的自定义路由,请您试试 yoursite.com/user/id/?page=2 因为我认为字符串 id?page=2 作为一个参数传递。 您还可以通过打印传递的 url 键数组来进行调试:

    回声'
    ';
    print_r($this->uri->segment_array());
    回声'
    '

    你会得到所有的参数传递给你的控制器动作。您还可以看到这个答案:Handling question mark in url in codeigniter 关于扩展核心 URI 类(如果需要)。 我希望这会有所帮助,否则更多信息会有所帮助,例如,当您使用像 site.com/user/id 这样的普通请求以及在执行 site.com/user/id 时,控制器中传递的 url 键是什么? page=2 个请求。

    ****** 编辑 ********** 如果您使用的是 CI 1.7.1 或 1.7.2,那么您将获得 [1] => 页面,因为在 _fetch_uri_string 方法中您有这样的内容:

    if (is_array($_GET) && count($_GET) == 1 && trim(key($_GET), '/') != '') { $this->uri_string = key($_GET); 返回; }

    由于您有 site.com/user/id/?page=2 这意味着:$_GET['page'] = 2 并且 page 是 $_GET 中的键的名称

    请使用上面的链接了解如何在您的应用程序中扩展此类并在此处添加您自己的逻辑,例如,这样的内容适用于 1.7.1 或 1.7.2

    if (is_array($_GET) && count($_GET) == 1 && trim(key($_GET), '/') != '') { //注释这行因为你不需要它 //$this->uri_string = key($_GET); //如果有,则获取当前页码 $page_number = (int) $_GET['page']; //在这里用正确的id设置uri_string并传递id(你也应该在这里得到)和页码作为第二个参数然后返回;进一步停止执行 $this->uri_string = 'dashboard/index/id/'.$page_number 返回; } //在您的仪表板控制器中: //将默认值设置为0并进一步处理 公共函数索引($id=0, $page_number=0) { }

    希望对你有帮助

    【讨论】:

    • 当我用 mysite.com/user/id/?page=2 打印出传递的 url 键数组时,我只得到 1 个值:[1] => page 用于 mysite.com/user/id/ 我得到 2 个值:[1]=> user [2] => id
    • $config['enable_query_strings'] 标志也设置为 TRUE
    • @xylar 在这里查看解决方案,它应该已经解决了您的问题,如果是这样,请允许 zokibtmkd 承担责任,似乎他超出了帮助范围。如果不让我们知道,也许我们可以提供进一步的帮助。
    【解决方案2】:

    uri 段在这里不会帮助你。 您应该使用

    获取页面的值
    $page = $this->input->get('page');
    

    你的方法接口是什么样的?

    我刚试过这个

    public function index($one = '', $two = '')
    {
        echo $one.', '.$two.', ';
        echo '['.$this->input->get('page').']';
    }
    

    它会输出这个:user, id, [2]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2017-10-15
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多