-
Notifications
You must be signed in to change notification settings - Fork 3
2.アクション、ビュー、テンプレートの作成と処理の流れ
実際のアプリケーションの作成に入る前に、アクション、ビュー、テンプレートを作成してみましょう。
- ブラウザからアクセスされてから Envi でアプリケーションが起動し、HTMLが出力されるまでの流れを知る
- アクション、ビュー、テンプレートの役割を知る
ここでは、下記URLでアクセスすると、画面にHello Envi Worldが表示されるようにします。
http://bbs.example.jp/bbs.php/hello/index
やるべきことは3つです
- helloモジュールの追加
- indexアクションの追加
- indexビューの追加
envi コマンドを使ってそれぞれのひな形を作成します。 空のテンプレートのクション作成時に作成されますが、今回はそれに、ひな形をコピーします。
envi init-module bbs hello
envi init-action bbs hello index success
envi init-view bbs hello index
cat libs/envi3/work/base_php_template.tpl > apps/bbs/modules/hello/templates/index.tpl
このコマンドにより、ひな形から、hello という名前のモジュールと、 indexという名前のアクション、ビュー、テンプレートが作成されます。 これで、 /bbs.php/hello/index でアクセスができるようになっているはずです。 ブラウザからアクセスして確認してみましょう。
Enviの処理を大雑把に説明すると、こんな感じになります。
フィルター⇒アクション⇒ビュー⇒レンダラー⇒フィルタ
作成された Hello アクションファイル apps/bbs/modules/hello/actions/indexAction.class.php を開いてみましょう。 次の様にクラス、 indexAction が作成されているはずです。 (コメント等は省略しています)。
<?php
class indexAction extends helloActions
{
public function initialize()
{
return true;
}
public function shutdown()
{
return true;
}
public function validate()
{
$validator = validator();
$res = $validator->executeAll();
if ($validator->isError($res)) {
return false;
}
return true;
}
public function execute()
{
return Envi::SUCCESS;
}
public function defaultAccess()
{
return Envi::DEFAULT_ACCESS;
}
public function handleError()
{
return Envi::ERROR;
}
public function isSecure()
{
return false;
}
public function isPrivate()
{
return false;
}
public function isSSL()
{
return false;
}
}
このクラスは、 アクションクラス(アクションコントローラ) です。hello/indexアクションの実装、遷移先(ビュークラス)の決定をします。
execute()
、defaultAccess()
、handleError()
のreturn は、ビュークラスのファイル名にあたります。
execute()
で、Envi::SUCCESS;
が返ることによりindexView_success.class.phpが実行されることを表します。
-
実行できるかどうかの判定
-
isSecure
User::isLogin()
がtrueの場合のみ実行するかどうか。
return true;
で、User::isLogin()
の判定を行う。 -
isPrivate
Controller::forward()
かアクションチェインでのみ実行されるアクションかどうか。
return true;
の場合、制限がかかる -
isSSL
SSLでのアクセスのみ実行されるアクションかどうか。
return true;
の場合、制限がかかる
-
-
実処理
-
initialize
初期化処理。実行できるかどうかの判定のあと、最初に実行される。
falseを返すと、そこでそのアクションは処理を終了しビューも実行されない。 -
validate
アクションクラスの中にあるこのメソッドでは、フォームの値の検証 (Validation) や、フォームの準備をする役割があります。 返り値によって、その後、execute
、defaultAccess
、handleError
のどれかが実行されます。 -
execute
-
defaultAccess
-
handleError
validate()
でEnvi::ERROR
もしくはfalse
-
shutdown
終了処理。Viewに移る前に実行される。
falseを返すと、そこでそのアクションは処理を終了しビューも実行されない。
-
続いて、ビュークラス apps/bbs/modules/hello/views/indexView_success.class.php を確認してみましょう。
<?php
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'views.class.php';
class indexView extends helloViews
{
public function execute()
{
$parameter = Request::getAttributeAll();
$this->display($parameter);
}
}
このクラスは、 ビュークラス です。
hello/indexViewにおける表示項目の設定などを行います。
その他にも、HTTPヘッダの設定やテンプレートの設定などの役割もあります。
デフォルトでは、Request::setAttribute()
された値のすべてを、
テンプレート内変数として定義しています。
アクションクラスで返された値に応じて、
- indexView_commit.class.php
- indexView_confirm.class.php
- indexView_default.class.php
- indexView_error.class.php
- indexView_success.class.php
のどれかのファイルがロードされます。
-
execute()
hello/indexViewにおけるビューの実装はこのメソッドにします。
続いて、テンプレート __apps/bbs/modules/hello/template/index.tpl__を確認してみましょう。
確認できたでしょうか?
デフォルトでは、PHPRendererを使用しているため、cat libs/envi3/work/base_php_template.tpl > apps/bbs/modules/hello/templates/index.tpl
で作成されたタダのhtmlが記述されているかと思います。
大まかな処理の説明はこれで終わりです。 これからアプリケーションの実装を行っていきます。 3.アプリケーションの実装 へ進んでください。