Mach3.laBlog

はじめてのKohana (2) : コントローラとビューの基本

この記事は賞味期限切れです。(更新から1年が経過しています)

「はじめてのKohana」の第二回目は、コントローラとビューのごく基本的な使い方を紹介します。

はじめてのKohana

ルーティングとコントローラ

まず、前記事で表示された「hello, world !」の実体はどこにあるのか、から見てみましょう。 bootstrap.php を見てみると、末尾に次のような設定記述があります

Route::set('default', '(<controller>(/<action>(/<id>)))')
    ->defaults(array(
        'controller' => 'welcome',
        'action'     => 'index',
    ));

詳しい説明は省きますが、ここでは全てのパラメータを省略してアクセスされた場合のルーティングの設定をしています。 初期設定では、”welcome” コントローラの “index” アクションを呼ぶ設定となっています。 ではそのコントローラはどこに格納されているかというと、

/application/classes/controller/welcome.php

ここにあるわけです。コントローラは全て、このディレクトリに設置する決まりとなっています。 さらにファイルの中身を見てみます。

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Welcome extends Controller {
    public function action_index()
    {
        $this->response->body('hello, world!');
    }
} // End Welcome

中身を見ると、どのような命名規則になっているのか大体わかりますね。 このルールに則ってコントローラ・アクションを探し、無かった場合は404を返す仕組みです。

  • ファイル名 : “welcome.php” ([name].php)
  • コントローラ名 : “Controller_Welcome” (Controller_[Name])
  • アクション名 : “action_index” (action_[name])

例えば /foo/bar でアクセスさせたい場合は、

/application/classes/controller/foo.php

を設置し、内容を次のようにします。

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Foo extends Controller {
    public function action_bar()
    {
        // do something
    }
}

ビューを使って出力する

上の例では文字列をそのまま出力していますが、Webアプリケーションを作る場合はビューファイルを使用します。
ビューファイルの格納場所は

/application/views/

です。ここでは名前を “foo” として、 foo.php を作ってみましょう。

/application/views/foo.php

中身は適当なHTMLを記述しておきます。
(実際は値を受け取る等しますが、それはまた別の記事で)

Hello !!

こんにちは!

次に、設置したビューファイルをコントローラから出力してみます。
先程作ったfooコントローラのbarアクションを編集しましょう。

public function action_bar()
{
    $view = View::factory("foo");
    $this->response->body($view);
}

View::factory(“[view_name]”); でビューファイルを基にしたビューインスタンスが生成され、
それを元に $this->response->body() で出力をします。

再度 /foo/bar にアクセスすると、設置したビューファイルの中身が出力されるはずです。

まとめ

Kohanaのコントローラとビューの基本的な点をまとめました。
次回は、コントローラについてもう少し詳しくご紹介します。


» もくじ

  1. Hello World !
  2. コントローラとビューの基本
  3. コントローラ
  4. ルーティング
  5. ビュー
  6. モデルとデータベース
  7. バリデーション

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*