路由控制器覆盖



我正在使用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文件中,但在任何其他可以匹配的规则之前。因此,您应该从最特定的规则添加到最通用的规则。

最新更新