masayuki5160's diary

名古屋でエンジニアしてます。

Ethna勉強中 その2

本家サイトのアプリケーション構築手順1,2を
自分の解釈つきでまとめてみる。
(アプリケーション構築手順3はまた明日以降に。)

参考
アプリケーション構築手順
http://ethna.jp/old/ethna-document-tutorial-practice1.html


Ethnaでアプリケーション開発をするときの流れ

0.プロジェクト作成(#ethna add-project プロジェクト名)
1.アクションの定義(#ethna add-action アクション名)
2.ビューの定義(#ethna add-view ビュー名)
3.テンプレートの定義(#ethna add-template テンプレート名)

※プロジェクト作成後は1から3を繰り返し

プロジェクト作成

上記ethnaコマンド実行でディレクトリが自動で作成させる。
いろいろ作成されるが、よく使うディレクトリは、
・app
・app/action
・app/view
・template/ja_JP


アクションの定義
アクション、てのはユーザからのリクエストをサーバ側で処理してそれをブラウザで出力する一連の処理のことだそうな。(実はまだよくわかってないですw)

で、このアクションをするためにアクションクラスを実装する。そのアクションクラスの記述にいくつもルールがあって、、、(そのあたりは本家サイトを参照w)
それを踏襲したアクションクラスのベースを作成してくれるのが、

#ethna add-action アクション名

ていうコマンド。
基本的にほかの"ethna add-view"や"ethna add-template"のコマンドも同様のイメージでおけ。
そのときにベースとしてしようしているファイルがスケルトンファイル。
コマンド実行したあとのメッセージ見るとよくわかります。(下記でいうところのskel/skel.action.phpがスケルトンファイルってこと)

# ethna add-action login
file generated [/home/ethna/project/sample3/skel/skel.action.php -> /home/ethna/project/sample3/app/action/Login.php]
action script(s) successfully created [/home/ethna/project/sample3/app/action/Login.php]

で、コマンドで作成されたファイルはこれ。
perform()メソッドでは"login"というビューを表示する処理となっている。
というわけでつぎは"login"というビューを作成しなきゃ、てなる。


2.ビューの定義

#ethna add-view ビュー名

のコマンドでスケルトンファイルからビューを作成する。
で作成すると、Ethnaの規則にしたがってapp/view/ビュー名.phpというファイルが作成される。

preforward()メソッドはテンプレート表示前に呼び出される。ここにテンプレートで使用するデータを設定することができる。(アクションクラス内でも大丈夫)
こんかいは、nowという名前で現在時刻を格納する。
そのときは、下記のように記述。

af->setApp('now', strftime('%Y/%m/%d'));
}
}
?>

テンプレートの定義
最後にテンプレートの定義について。
これもいままでと同様に、下記ethnaコマンドでスケルトンファイルからテンプレートを作成することができる。

#ethna add-template テンプレート名

で、template/ja/テンプレート名.tplとして作成されたファイルを使用する。ここではアクションクラス、ビュークラスで定義した変数を下記のように使用することができる。





Login View

current time: {$app.now}

確認する

http://IP/~プロジェクト名/?action_アクション名=true