SourceForge.jp

actioncontroller

Creator:開発者   Created:2009-07-16

 処理をひとつひとつのファイルアクセスでなく、CakePHP風にコントローラー内のアクションメソッドとして、まとめて記述する仕様にちいたんを拡張したサンプルです。サンプルのブログを流用しておりますので違いを見比べてみて頂けると良いと思います。

とりあえず初期設定

・必要であれば.htaccessにRewriteBaseを追加
・lib/config/database.phpを修正して下さい。

上記設定すれば既存のブログサンプルが入っている環境であればそのまま動くと思います。

ファイル構造としては、全てlibディレクトリ内に納めています。
ディレクトリを見れば何が入っているかは分かると思います。

app_controller.phpは全てのコントローラから継承される基本のコントローラーです。こちらを利用して処理の共通化なども可能です。

controllersディレクトリにコントローラを入れておきます。

blog_data_controller.php
class CBlog_dataController extends CAppController {
    function index() {

    }
    function edit($id = null) {
        $this->blog_data->findone(array('id' => $id));
    }
}

 例えば
/blog_data/index
にアクセスすると、
controllers/blog_data_controller.php
が読み込まれ、その中の
CBlog_dataController
が読み出され、indexメソッドが呼ばれます。

記述すべき処理は今までと同じです。
しかしコントローラー内の記述となるので、今まで
$c
と記述していた箇所は
$this
と直接コントローラーメソッドを呼び出す形に変更となります。

例えば
/blog_data/edit/112
にアクセスすると、
editメソッドが呼ばれますが、
引数として112が指定されます。
上の例だと$idに112がはいる形になります。

htmlコンポーネント
<?php echo $c->html->url('/blog_data/index'); ?>

 

今回のURL形式ですと相対URLなどを記述するのが難しいため、
htmlコンポーネントを作成致しました。
上記の形で指定したURLに飛ぶことが出来ます。
詳細はテンプレートをご覧下さい。

テンプレートは、views/blog_dataにblog_dataコントローラのテンプレートが入ります。
共通テンプレートはviews/layouts/default.htmlになります。

mod_rewriteでURL書き換えを行っています。
例えばtestという公開ディレクトリに.htaccessとindex.phpがある場合、
ブラウザ上では
test/blog_data/index
といった形で閲覧できます。

 上記のようにしたくない場合は.htaccessを削除し、
index.php?url=blog_data/index
みたいな感じで閲覧できると思います。

Demo page
Download