如果我们在codeigniter中给出方法/函数的名称index
,我们可以在不调用它的情况下转到该方法(因此我们只需要使用其controller
名称)。
这是因为我们在config.php
中指定了它(或CI默认指定它):
$config['index_page'] = 'index.php';
因此,当我使用library
之类的form_validation
时,我不需要指定索引方法。但是,当我尝试使用pagination
类时,我遇到了问题。
我需要在代码中指定index
方法,或pagination
不起作用(如果我点击下一个分页索引,则会出现 404 错误) :
$config['base_url'] = site_url('/backend_umat');
所以,我必须使用:
$config['base_url'] = site_url('/backend_umat/index');
pagination
完美无缺。
拜托,有人可以给我一个关于发生了什么的解释吗?我的问题 已解决,但我好奇关于这里发生了什么。
谢谢:D
答案 0 :(得分:1)
这是因为当你在控制器名称CodeIgniter无法区分它之后有一些东西它是索引方法的参数时,它被假定为一种方法。导航到下一页时会附加到URL的内容,如果基本URL中没有方法名称,则会尝试从附加的URL中获取方法名称。
答案 1 :(得分:1)
您可以将所有backend_umat/
路由到index
。
$routes['backend_umat/(:any)'] = 'backend_umat/index/$1';
仅当方法名称为空时为空,NULL
$routes['backend_umat/(^[\s]*$)'] = 'backend_umat/index/$1';
// or JUSt
$routes['backend_umat/(^[\s]*$)'] = 'backend_umat/index';
您可以在routes
中添加config/routes.php
配置。
答案 2 :(得分:1)
在codeigniter分页中:
$config['base_url']
应该是完整的网址。即,base_url()/{CONTROLLER}/{FUNCTION}
。
base_url()/{CONTROLLER}/{PAGE1} , base_url()/{CONTROLLER}/{PAGE2} , base_url()/{CONTROLLER}/{PAGE3}
等等......而不是base_url()/{CONTROLLER}/{FUNCTION}/{PAGE_NO}
现在代替你的函数有一个数字(页码),它在你的控制器类中不存在,但被假定为你控制器内的一个函数。这就是你得到 404 Page Not Found 错误的原因。
$config['base_url'] = site_url('/backend_umat/index');
$route['backend_umat/(:num)'] = 'backend_umat/index/(:num)';
$config['uri_segment'] = 2;
中
如果您在代码中使用了$this->uri->segment(3)
,请将其设为$this->uri->segment(2)