validation機能実装、途中経過
入力フォームテンプレートを下記のように用意すると、
<form action="/input.php/regist" method="post"> {moony_text name='name' errorClass='error' xhtml=true} {moony_error name='name' prefix='<span class="error">' postfix='</span>'}<br /> <input type="submit" /> </form>
実際のhtmlとして以下のように展開される。
<form action="/input.php/regist" method="post"> <input type="text" name="name" value="" /> <br /> <input type="submit" /> </form>
送信を受けるアクションクラスで以下のようにvalidateメソッドを実装すると、
class RegistAction extends Moony_Action { function validate($request, $errors) { $is_valid = true; // 必須入力チェック $is_valid = Moony_Validator::validateRequired($request, $errors, 'name', '名前が入力されていません'); // 'abc'と入力されたかチェック if ($is_valid && $request->get('name') != 'abc') { $errors['name'] = '名前の入力が正しくありません'; $is_valid = false; } return $is_valid; } function execute($request, $response) { // 入力が正しい場合の処理 } }
項目'name'が未入力の場合、入力画面を以下のように再表示する。
<form action="/input.php/regist" method="post"> <input type="text" name="name" value="" class="error" /> <span class="error">名前が入力されていません</span><br /> <input type="submit" /> </form>
項目'name'に'bcd'と入力された場合、入力画面を以下のように再表示する。
<form action="/input.php/regist" method="post"> <input type="text" name="name" value="bcd" class="error" /> <span class="error">名前の入力が正しくありません</span><br /> <input type="submit" /> </form>
今のところこんな感じ。入力項目を保持、入力画面を再表示するためにSmartyのプラグイン使いまくり。Strutsのカスタムタグ風味。