2013-05-03 124 views
0

如果我们在codeigniter中给出了一个方法/函数的名字index,我们可以在不调用它的情况下转到那个方法(所以我们只需要使用它的controller名称)。CI索引方法/函数在某些情况下不会自动添加?

那是因为我们在config.php指定它(或CI默认指定它):

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

所以,当我使用一些像libraryform_validation,我并不需要指定索引方法。但是,我尝试使用pagination类时出现问题。

我需要在代码中指定index方法,或pagination不工作(如果我点击下一个分页指数,它提供了错误):

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

所以,我有使用:

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

pagination完美的作品。

请问任何人都可以给我一个说明关于发生了什么事?我的问题解决了,但我是好奇关于这里发生了什么。

感谢:d

+0

你有没有使用'$ config ['uri_segment'] = 3;'分页? – 2013-05-03 07:08:56

+0

@elavarasanlee是的:D – 2013-05-03 11:10:48

回答

1

在笨分页:

  • $config['base_url']应该是完整的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错误。


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

  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)
    这将做。
+0

感谢您的简洁解释:D – 2013-05-03 11:14:57

+0

dat我的责任.. 。:) – 2013-05-03 11:18:25

1

这是因为当你的控制器名称后有一些笨不能区分这是该指数方法的参数,它被认为是一种方法。当导航到下一个页面时,会附加到URL,并且如果基本URL中没有方法名称,它会尝试从附加的url中获取方法名称。

+0

感谢您的帮助,它太糟糕了我只能接受1回答 – 2013-05-03 11:12:12

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'; 

可以在config/routes.php添加routes配置。

+0

感谢您的帮助,它太糟糕了我只能接受1个答案 – 2013-05-03 11:13:27

相关问题