CodeIgniter“default_controller”在URL中没有控制器名称

时间:2012-12-04 14:51:52

标签: php codeigniter

请原谅我,如果这是一个“问题”,或者如果您需要更多信息来回答,我是CodeIgniter的新手,仍然没有找到一些最佳实践的东西......

routes.php$route['default_controller'] = "home";,所以我的default_controller显然是“家”。

我的home.php控制器里面有:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {
    function __construct() {
        // blah
    }
    function index(){
        // blah
    }
    function login(){
        // blah
    }
}

哪个工作正常,一切都没问题。我唯一想知道的是,如果我想访问login功能,我目前必须访问www.blah.com/home/login。 如何更改它以便只需访问www.blah.com/login,而无需创建新的控制器 (我希望在默认情况下保留其中一些时基网址控制器)的 ?这是可能的还是我只需要创建一个新的控制器?

如果我只需要创建一个新的控制器,是否有最佳实践可以控制您拥有多少个控制器等。

3 个答案:

答案 0 :(得分:4)

文档说明:此路由将告诉路由器,如果URL中提供的URI段无法与有效路由匹配,则使用哪些URI段。

因此请使用$route['login'] = 'home/login';

答案 1 :(得分:0)

我设置它的方法是让index函数充当网守:如果没有登录,则显示登录表单view,如果已登录,则重定向到您的(受保护的)主页。只有当用户提交登录/密码并执行登录逻辑时,login函数才能通过post访问。

答案 2 :(得分:0)

您需要在application/config/routes.php文件中添加一行

$route['login'] = "home/login";