我正在使用带有CodeIgniter框架的MVC模式开发一个网站。
我有两个控制器:
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的控制器。
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
您必须为Members
$route ['members'] = "members";
$route ['members/(:any)'] = "members/$1";
$route ['default_controller'] = "site";
$route ['(:any)'] = "site/view/$1";
请注意,顺序很重要,当检测到匹配的路线时,上面的路线将首先使用members
。
答案 1 :(得分:0)
您应该为该控制器添加特定的路由规则,例如:
$route['members/(:any)'] = 'members/$1';
或者可以为控制器中的每个方法添加一个,例如:
$route['members/login'] = 'members/login';
请注意,您需要将此/这些规则添加到routes.php
文件中,但在任何其他可匹配的规则之前。所以你应该从最具体的规则到最普遍的规则。