使用带有codeigniter的自定义命名控制器

时间:2016-12-29 12:21:19

标签: php codeigniter controller

您好我正在使用管理员环境和用户环境的应用程序。为了使我的代码和控制器更具可读性,我想为我的管理员和用户控制器使用某种前缀。或者可以为admin en用户控制器使用不同的目录。不使用url中的确切名称来调用控制器。

有没有人知道是否有办法做这个或为我的想法解决。 例如,我想使用:user。[controllername] .php或user_ [controllername] .php

编辑:

因此,当我使用路由将用户控制器与管理控制器分开时,它会制动我的模板解析器。

例如,假设网址为:http://myapplication.com/user/profile,在正常情况下,这会调用用户控制器和功能配置文件。我的模板解析器查找文件夹用户并检查是否有level1.tpl文件。 让我们说我们想编辑这个配置文件,网址是:http://myapplication.com/user/profile/edit/1现在它会在文件夹用户中搜索level2.tpl文件,并调用id为1的函数编辑。

路线的问题在于它为我不想要的网址添加了一些东西,因为它会在错误的文件夹中搜索,例如当我们使用admin / dashboard时它会查看文件夹admin而不是文件夹仪表板

enter image description here

所以基本上我只需要告诉应用程序使用控制器所在的不同目录或根据用户登录的不同文件名。

提前致谢,分享您的知识。

1 个答案:

答案 0 :(得分:2)

你可以通过多种方式做到这一点。

1。在应用程序/核心中创建两个名为“Admin_Controller.php”和“User_Controller.php”的文件,其中包含以下类签名,

class Admin_Controller extends CI_Controller
{    
    public function __construct()
    {
        parent::__construct();
    }
}

class User_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
    }
}

在这些类中,您可以使用PHP逻辑来执行任何操作,只需将控制器扩展为Admin_Controller或User_Controller即可。 例如:class Home extends User_Controller {}class Dashboard extends Admin_Controller {}

2. 你也可以使用routes.php

来做到这一点

例如:

// for admin
$route['admin/(.+)'] = 'admin_$1';

// for frontend
$route['(.+)'] = 'user_$1';

我希望这可能会给你一些想法。