Akelosでモジュールを使う

一般的にWEBアプリで管理画面を作る場合、通常のURLとは違い

http://〜/admin/[controller]/[action]

というURLを使いたくなる。Akelosでコレを実現する場合はとりあえずモジュールを使えばおk。

たとえば上記の例の場合、まずURLルーティングを行うためにconfig/routes.phpを編集する

config/routes.php

<?php

$Map->connect('/admin/:controller/:action/:id',array('module' => 'admin', 'controller' => COMPULSORY, 'action' => 'index'));

こんな感じで書けば「/admin/〜」へのアクセスはadminモジュールとして処理される。

モジュールを使う際の基本ルールは以下のような感じ

  • controllerファイル: app/controllers/[module_name]/[controller_name]_controller.php
  • controllerクラス名: [ModuleName]_[ControllerName]Controller
  • viewファイル: app/views/[module_name]/[controller_name]/[action_name].tpl

これに従って、adminモジュールでuserクラスを使用する場合はこうなる。

app/controllers/admin/user_controller.php

<?php
Admin_UserController extends ApplicationController
{
  function index(){}
}

app/views/admin/user/index.tpl

<h1>ユーザ管理画面</h1>
このページはユーザ管理画面です。

上記のようにすれば「http://〜/admin/user/index」にアクセスして利用することができるようになる。


ちなみにこの機能を使うと、view内の全てのurlヘルパーを使ったurl出力に「module」パラメータが付与される。
これがいやな場合は、コントローラに以下の記述を入れればよい。

<?php
Admin_UserController extends ApplicationController
{
  function index(){}

  function defaultUrlOptions($options)
  {
    $this->module_name = null;
    return parent::defaultUrlOptions($options);
  }
}