Akelos Modules允许你归组,把很多controllers组织成一个形式。所以代替了你必须把所有的controllers放在同一个地方,现在你可以把他们拆开放在不同的地方。
为了告诉Akelos哪些modules是可用的,你需要在map中为这个新module添加一个规则,然后可以被specific controller所调度。
让我们说一下,如果你想把你所有的administration controllers和views归组放入admin module。
那你将需要编辑config/routes.php文件,通过追加下面的代码来使你的应用程序知道这个新module
$Map->connect('/admin/:controller/:action/:id', array('controller' => 'dashboard', 'action' => 'index', 'module' => 'admin'));
before other routes.
现在你可以把dashboard controller放在app/controllers/admin/dashboard_controller.php用一个新的规则来声明这个controller。用ModuleName + “_”“给这个controller的名字加一个前缀。
class Admin_DashboardController extends AdminController { //... }
你可以继承基本的ApplicationController或者向上面代码所写的那样,继承一个特殊的controller。在你的module之后,Akelos需要一个controller,这个例子中是 app/controllers/admin_controller.php ,并且如果存在的话,它将会被加载,所以你的Admin_DashboardController可以继承于它。
class AdminController extends ApplicationController { }
Akelos同时需要view,在/app/views/admin/controller_name下,和在/app/helpers/admin/下的helpers
如果你想有一个特殊的布局,Akelos会为你设定一个app/views/layouts/admin.tpl。
Installers也一样被应用于modules。在这个例子中,我们在app/installers/admin/*_installer.php下会有几个several installers/migrations app/installers/admin/*_installer.php。现在只需要一样,那就是告诉installer他属于那个module,如下
app/installers/admin/user_installer.php
class UserInstaller extends AkInstaller { var $module = 'admin'; // *** }
controller generator支持generating modular controllers ,如下:
./script/generate controller Admin::Users