我正在使用MVC模式和CodeIgniter框架开发一个网站。
我有两个控制器:
站点-主控制器在视图中导航
class Site extends CI_Controller {
public function index() {
$this->view ();
}
public function view($page = 'home') {
if (! file_exists ( "application/views/pages/$page.php" )) {
show_404 ();
}
$data ['page'] = 'pages/' . $page;
$this->load->view ( 'template/template.php', $data );
}
}
会员-管理会员系统的管理员
class Members extends CI_Controller {
public function __construct() {
$this->load->model ( "members_model" );
}
public function login() {
$this->members_model->login ();
}
}
我的路线配置
$route ['default_controller'] = "site";
$route ['(:any)'] = "site/view/$1";
所以现在我有一个小问题,那就是当我调用members控制器时,它会查找一个名为members的页面,而不是名为member的控制器。
我该怎么办?
您必须为Members
创建其他路由
$route ['members'] = "members";
$route ['members/(:any)'] = "members/$1";
$route ['default_controller'] = "site";
$route ['(:any)'] = "site/view/$1";
注意,顺序是重要的,当检测到匹配的路由时,上面的路由将首先使用members
。
您应该为该控制器添加一个特定的路由规则,如下所示:
$route['members/(:any)'] = 'members/$1';
或者在控制器中为每个方法添加一个,比如:
$route['members/login'] = 'members/login';
请注意,您需要将这个/这些规则添加到routes.php
文件中,但在任何其他可以匹配的规则之前。因此,您应该从最特定的规则添加到最通用的规则。