我有这部分代码:
/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"
吗?
答案 0 :(得分:2)
当您点击domain/index.php/blog/2
时,这意味着您正在调用博客控制器的默认方法索引并传递2作为参数。在这种情况下,它将默认参数$page = '1'
替换为2。
当您点击domain/index.php/blog
时,索引函数将被调用而没有任何参数,并且将$page
设为1。
更新后的答案(根据评论)
如果您的控制器包含一个名为_remap()的方法,则无论您的URI包含什么内容,它将始终被调用。它会覆盖URI确定调用哪个方法的常规行为,从而使您可以定义自己的方法路由规则。
使用下面的代码可以解决您的问题。
<?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;
}
}