Ethnaで入力/確認/完了画面の開発例

Ethnaで、入力画面/確認画面/完了画面の構成とするときの
方法について、簡単な実験の成果を記録し、役立てたい。

■入力項目
メールアドレス、パスワード

■フォルダ構成
Userフォルダ下にRegister.php(入力画面)、Confirm.php(確認画面)、
Registerフォルダ

Registerフォルダ下にDo.php(完了画面)

■app/action下の$formの定義
(1)app/action/User/Register/Do.phpの中でだけ、$formの定義。
(2)app/action/User/Register/Do.phpの中で$formの定義の前に
var $use_validator_plugin = true;を実施。
(3)app/action/User/Register.phpと、app/action/User/Confirm.phpでは、
class Sample2_Form_UserRegister
extends Sample2_Form_UserRegisterDo{}として、Do.phpの$formを
継承。
ただ、このままではSample2_Form_UserRegisterDoの箇所でエラーと
なるため、ファイル先頭にrequire_once 'Register/Do.php';
と記載して、インクルードする必要あり。
(4)app/view/User/Register.phpとapp/view/User/Confirm.phpでは、
クラス内に下記のように記載。(不要かも?)
var $helper_action_form = array(
'user_register_do' => null,
);

■Validationの実施
(1)app/action/User/Confirm.phpとapp/action/User/Register/Do.php
にて、$this->af->validate() > 0の場合、user_registerへ画面遷移。

■確認画面でのアサイン
(1)画面表示のアサイン
(A)Confirm.phpでは、perform()にて下記の記述
$mailaddress = $this->af->get('mailaddress');
$this->af->setApp('mailaddress', $mailaddress);
(B)テンプレートでは下記の記述
{$app.mailaddress}

(2)HIDDENのアサイン
下記のようにすれば、Form値をすべてHIDDENで渡せる。
(A)Confirm.phpでは、perform()にて下記の記述
$hidden_vars = $this->af->getHiddenVars(null, null);
$this->af->setAppNE('hidden_vars', $hidden_vars);
(B)テンプレートでは下記の記述
{$app_ne.hidden_vars}
なお、ボタン等、HIDDENで渡したくないForm値がある場合は、
getHiddenVars()の第2パラメータで指定して除外可能。

コメントを残す