如果没有参数,Codeigniter索引方法将为GET参数返回“索引”?

时间:2018-09-21 12:37:54

标签: php codeigniter-3

我有这部分代码:

/data/bin

当我击中env[PATH] var_dump 返回我<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Blog extends CI_Controller { function _remap($page){ $this->index($page); } public function index($page = '1') { var_dump($page); exit; } } ,当我击中domain/index.php/blog时返回我2,这是正确的吗?但为什么 ?我有默认参数string(5) "index"吗?

1 个答案:

答案 0 :(得分:2)

当您点击domain/index.php/blog/2时,这意味着您正在调用博客控制器的默认方法索引并传递2作为参数。在这种情况下,它将默认参数$page = '1'替换为2。

当您点击domain/index.php/blog时,索引函数将被调用而没有任何参数,并且将$page设为1。

更新后的答案(根据评论)

  

如果您的控制器包含一个名为_remap()的方法,则无论您的URI包含什么内容,它将始终被调用。它会覆盖URI确定调用哪个方法的常规行为,从而使您可以定义自己的方法路由规则。

Documentation Link

使用下面的代码可以解决您的问题。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Blog extends CI_Controller {

    function _remap($page){
        if($page=='index'){
            $this->index($page = 1);
        }
        $this->index($page);        
    }

    public function index($page = 1)
    {       
        var_dump($page); exit;
    }

}