我想要两个文件夹来保存codeigniter的控制器:
/application/controllers
/application/buckets
我是一个偏执狂的人,我想分开两种类型的控制器。
在存储桶文件夹中,结构应用是这样的:
/application/buckets/example/index.php
/application/buckets/example2/index.php
/application/buckets/example3/index.php
¿也许扩展路由器类?
一个工作示例:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
Extended the core Router class to allow for sub-sub-folders in the controllers directory.
*/
class App_Router extends CI_Router {
function __construct()
{
parent::__construct();
}
function _validate_request($segments)
{
if (count($segments) == 0)
{
return $segments;
}
if (file_exists(APPPATH.'buckets/'.$segments[0].'/index.php'))
{
$this->set_directory(APPPATH.'buckets/'.$segments[0]);
$this->set_class(ucfirst($segments[0]));
$this->set_method(isset($segments[1]) ? $segments[1] : 'index');
return $segments;
}
}
}
答案 0 :(得分:1)
您可以使用带有Codeigniter的Hierarchical MVC(HMVC)来实现此目的。
供参考,请参阅Modular Extensions - HMVC
答案 1 :(得分:0)
您可能希望查看父子控制器...一个扩展另一个。更清楚的是,您可以制作所需数量的控制器。
我同意@Brian Gottier:“改变他们的位置有什么作用?” 如果您手中有核心功能,则可以执行任何操作。 您可以使用钩子( CodeIgniter的钩子功能提供了一种方法,可以在不破坏核心文件的情况下利用和修改框架的内部工作。当CodeIgniter运行时,它遵循特定的执行过程,如应用程序流程页面所示。 强>)
在
中创建“Base”/“Admin”/“Public”/“XYZ”控制器application / core / MY_Controller.php
并将其余控制器保留在同一个应用程序/控制器文件夹中
MY_Controller是一个基本的核心库扩展。每当您使用MY_前缀创建一个类时,CodeIgniter Loader类将在加载核心库后加载它。
我们在这里所做的就是创建一个基类,我们的所有控制器和“控制器类型”都将继承。我们放在这里并分配给$ this的任何内容都可用于扩展此类的任何内容。
基本控制器是一种很简单的方法,可以为您提供特定于站点某个部分的全局数据,逻辑和共享代码。他们可以做各种疯狂的事情,我会留给你思考。
我希望这有帮助。