php講習 4/25
本日のテーマ
・エラーチェック(バリデーション)
(1)値を渡す先のアクション名.ymlをvalidateディレクトリに置く
input -> confirmなので、confirm.ymlをmember_addモジュールの
validateディレクトリに置く
(2)ymlファイルにチェックのルールを記述
fields:
nickname:
required:
msg: ニックネームを入力してください。
(3)エラーだった場合の遷移先をアクション定義する。
handleErrorアクション名
public function handleErrorConfirm()
{
$this->forward('member_add','input');
}
(4)tmpファイル(input)にエラーの表示を設定する。
バリデーションヘルパ、エラーメッセージの表示
<?php use_helper('Validation');?>
<?php if ($sf_request->haserror('nickname')):?>
<div style="background-color: #ff8888;">
<?php echo form_error('nickname')?>
</div>
<?php endif;?>
(5)エラーメッセージのデフォルト表示変更(エラーメッセージ矢印の設定を消す)
front/config/setting.yml
validation_error_prefix: ' '
validation_error_suffix: ' '
・記述が終わったら、symfony cc
(6)エラーとなる値を入れ、エラーメッセージの表示と、
入力値が残ることを確認する。
リダイレクト:post(get)された値は引き継がない
フォワード:post(get)された値を引き継ぐ
・handleErrorConfirmでパラメータが引き継がれている。
・inputテンプレートで受け取っているので表示されている。
$sf_params->get('nickname')
<その他のチェック>
・文字列のバリデーター
sfStringValidator:
min: 2
min_error: 少なくとも2文字入力してください
・メールアドレス
sfEmailValidator:
email_error: このメールアドレスは無効です
・数字のチェック
・チェックの項目は覚えなくてもいい。
<練習>
・掲示板で、ニックネームと投稿に必須入力のチェックを追加
・symfonyで用意されているチェックで足りないのは、DBにある情報とのチェック
ニックネームが重複していないか?
・カスタムバリデータ
myNicknameValidator:
nickname_error: そのニックネームは既に使われています。
class myNicknameValidator extends sfValidator作成
・動作確認
<追加の情報>
・バリデートでエラーを呼ぶとき、吐き出されるタグがクラスform_error
setting.ymlまたは、cssのクラス指定でスタイルを変更可能
<div id="error_for_nickname" class="form_error" style="">
このニックネームは既に利用されています </div>
・残りの時間は、課題にバリデートを適用
少なくとも、1つ、カスタムバリデータを作る
・ログインユーザの自分の情報を変更するとき、ニックネームを変更しなければ
DBにはニックネームがあるので、必ず1以上が返る。
(処理作成中)
0 コメント:
コメントを投稿