0

如果我们index在 codeigniter 中给出一个方法/函数的名称,我们可以在不调用它的情况下转到该方法(所以我们只需要使用它的controller名称)。

那是因为我们在以下位置指定它(或 CI 默认指定它)config.php

$config['index_page'] = 'index.php';

所以当我使用一些librarylike时form_validation,我不需要指定索引方法。但是,当我尝试使用该pagination课程时遇到了问题。

我需要index在代码中指定方法,否则pagination不起作用(如果我单击下一个分页索引,它会给出404错误):

$config['base_url'] = site_url('/backend_umat');

所以,我必须使用:

$config['base_url'] = site_url('/backend_umat/index');

而且pagination作品完美。

拜托,谁能给我解释一下发生了什么?我的问题解决,但我很好奇这里发生了什么。

感谢:D

4

3 回答 3

1

这是因为当你在控制器名称CodeIgniter后面有东西无法区分它是索引方法的参数时,它被认为是一个方法。当导航到下一页时,附加到 URL 的内容,如果基本 url 中没有方法名称,它会尝试从附加的 url 中获取方法名称。

于 2013-05-03T08:42:58.043 回答
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';

您可以routesconfig/routes.php.

于 2013-05-03T08:44:10.220 回答
1

在 codeigniter 分页中:

  • $config['base_url']应该是完整的网址。即,base_url()/{CONTROLLER}/{FUNCTION}
  • 所以如果你没有给出完整的路径,分页类将忽略{FUNCTION}并创建如下链接:

base_url()/{CONTROLLER}/{PAGE1} , base_url()/{CONTROLLER}/{PAGE2} , base_url()/{CONTROLLER}/{PAGE3}等等......而不是 base_url()/{CONTROLLER}/{FUNCTION}/{PAGE_NO}


现在在你的函数的地方有一个数字(页码),它不存在于你的控制器类中,但被假定为你的控制器中的一个函数。这就是您收到404 Page Not Found错误的原因。


有两种方法可以解决这个问题。

  1. 你做的方式。$config['base_url'] = site_url('/backend_umat/index');
  2. 使用路线
    在你的routing.php文件中定义这个:
    $route['backend_umat/(:num)'] = 'backend_umat/index/(:num)';
    在你的控制器中:$config['uri_segment'] = 2;
    如果你$this->uri->segment(3)在你的代码中使用了:,$this->uri->segment(2)
    就这样吧。
于 2013-05-03T08:48:37.210 回答