Php 某些情况下未自动添加CI索引方法/功能?
如果我们在codeigniter中给出一个方法/函数的名称Php 某些情况下未自动添加CI索引方法/功能?,php,codeigniter,routes,Php,Codeigniter,Routes,如果我们在codeigniter中给出一个方法/函数的名称index,我们就可以不调用它而转到该方法(因此我们只需要使用它的控制器名称) 这是因为我们在config.php中指定了它(或者CI默认指定了它): $config['index_page'] = 'index.php'; 因此,当我使用一些库时,比如表单验证,我不需要指定索引方法。但是,当我尝试使用分页类时,出现了一个问题 我需要在代码中指定索引方法,或者分页不起作用(如果单击下一个分页索引,则会出现404错误): 因此,我必须使用
index
,我们就可以不调用它而转到该方法(因此我们只需要使用它的控制器
名称)
这是因为我们在config.php
中指定了它(或者CI默认指定了它):
$config['index_page'] = 'index.php';
因此,当我使用一些库
时,比如表单验证
,我不需要指定索引方法。但是,当我尝试使用分页
类时,出现了一个问题
我需要在代码中指定索引
方法,或者分页
不起作用(如果单击下一个分页索引,则会出现404错误):
因此,我必须使用:
$config['base_url'] = site_url('/backend_umat/index');
而且分页
工作得很好
请问,有人能给我一个解释一下发生了什么事吗?我的问题已经解决了,但我对这里发生的事情很好奇
谢谢:D这是因为当您在控制器名称CodeIgniter之后有一些东西无法区分时,它是索引方法的一个参数,因此假定它是一个方法。当导航到下一页时,某个附加到URL的内容,如果基本URL中没有方法名称,则它将尝试从附加的URL获取方法名称。这是因为当控制器名称CodeIgniter之后有某个内容无法区分时,它是索引方法的参数,因此假定它是一个方法。当导航到下一页时,某个附加到URL的内容,如果基本URL中没有方法名称,它将尝试从附加的URL获取方法名称。您可以将所有
后端\u umat/
路由到索引
$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';
您可以在config/routes.php中添加路由
配置您可以将所有后端\u umat/
路由到索引
$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';
您可以在codeigniter分页的config/routes.php
中添加routes
配置:
$config['base\u url']
应该是完整的url。i、 例如,base\u url()/{CONTROLLER}/{FUNCTION}
- 因此,如果您没有给出完整的路径,分页类将忽略{FUNCTION},并将创建如下链接:
base_url()/{CONTROLLER}/{PAGE1},base_url()/{CONTROLLER}/{PAGE2},
基本url()/{CONTROLLER}/{PAGE3}
等等。。。而不是
base_url()/{CONTROLLER}/{FUNCTION}/{PAGE_NO}
现在,在函数的位置上有一个数字(页码),它不在控制器类中,但被假定为控制器中的函数。这就是您得到404页面未找到错误的原因。
有两种方法可以解决这个问题。
你做这件事的方式<代码>$config['base_url']=site_url('/backend_umat/index')代码>
使用路线
在routing.php文件中定义:
$route['backend\u umat/(:num)]='backend\u umat/index/(:num)'代码>
在您的控制器中:$config['uri_segment']=2代码>
如果您在代码中使用了:$this->uri->segment(3)
,则将其设置为$this->uri->segment(2)
那就行了
在codeigniter中分页:
$config['base\u url']
应该是完整的url。i、 例如,base\u url()/{CONTROLLER}/{FUNCTION}
- 因此,如果您没有给出完整的路径,分页类将忽略{FUNCTION},并将创建如下链接:
base_url()/{CONTROLLER}/{PAGE1},base_url()/{CONTROLLER}/{PAGE2},
基本url()/{CONTROLLER}/{PAGE3}
等等。。。而不是
base_url()/{CONTROLLER}/{FUNCTION}/{PAGE_NO}
现在,在函数的位置上有一个数字(页码),它不在控制器类中,但被假定为控制器中的函数。这就是您得到404页面未找到错误的原因。
有两种方法可以解决这个问题。
你做这件事的方式<代码>$config['base_url']=site_url('/backend_umat/index')代码>
使用路线
在routing.php文件中定义:
$route['backend\u umat/(:num)]='backend\u umat/index/(:num)'代码>
在您的控制器中:$config['uri_segment']=2代码>
如果您在代码中使用了:$this->uri->segment(3)
,则将其设置为$this->uri->segment(2)
那就行了
你是否使用了这个$config['uri_segment']=3代码>用于分页???@elavarasanley yes:DDid您是否使用此$config['uri_segment']=3代码>用于分页???@elavarasanley是:感谢您的简明解释:感谢您的简明解释:D