「Php/fuelphp/validation/基本」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「==サンプル== $val = Validation::forge('my_validate'); $val->add_field('app_name', 'AppName', 'required|max_length[63]'); // 必須で63文字まで $val->add_field...」) |
|||
行43: | 行43: | ||
return Response::forge(View::forge('user/index')); | return Response::forge(View::forge('user/index')); | ||
} | } | ||
+ | |||
+ | ==パスワード一致させるvalidation== | ||
+ | パスワードをmatch_valueだけでチェックすると以前のパスワードがエラーメッセージに載るので、以下のようにエラーメッセージを上書きする | ||
+ | $val = Validation::forge('user_validation'); | ||
+ | $val->add_field('name', '名前', 'required'); | ||
+ | $val->add_field('email', 'Email', 'required|valid_email'); | ||
+ | $rule_pass = 'required|min_length[4]|max_length[20]'; | ||
+ | $user = \Model_User::find(Input::param('id')); | ||
+ | if ($user) { | ||
+ | $rule_pass .= '|match_value['.$user->pass.',1]'; | ||
+ | } | ||
+ | $val->add_field('pass', 'パスワード', $rule_pass); | ||
+ | $val->set_message('match_value', '『:label』が以前登録されたもの違います'); | ||
+ | |||
==公式サイト== | ==公式サイト== | ||
http://fuelphp.com/docs/classes/validation/validation.html | http://fuelphp.com/docs/classes/validation/validation.html |
2016年2月8日 (月) 06:28時点における版
サンプル
$val = Validation::forge('my_validate'); $val->add_field('app_name', 'AppName', 'required|max_length[63]'); // 必須で63文字まで $val->add_field('description', 'Description', 'max_length[255]'); // 任意で255文字まで $val->add_field('test_id', 'TestId', 'required|valid_string[numeric]'); // 必須で数字 $val->add_field('month', 'Month', 'required|valid_string[numeric]|numeric_min[1]|numeric_max[31]'); // 必須で1~31まで $val->add_field('month', 'Month', 'match_pattern[/[\w]+/]'); // 正規表現で文字のみ $val->add_field('ymd', 'Ymd', 'match_pattern[/[12][\d]{3}[01][\d][0123][\d]/]'); // 簡易yyyymmdd判定 if ($val->run()) // 正常 } else { // 異常 Session::set_flash('error', $val->error()); }
エラー表示
foreach ($val->error() as $error) { echo $error; }
コントローラーにValidate記述
public function action_index() { return Response::forge(View::forge('user/index')); } public function post_index() { $val = Validation::forge('user_validation'); $val->add_field('id', 'Id', 'required'); if ($val->run()) { $user = Model_User::forge(array( 'id' => Input::get('id'), 'name' => Input::get('name'), )); if ($user and $user->save()) { Session::set_flash('success', e('Added user #'.$user->id.'.')); Response::redirect('user'); } else { Session::set_flash('error', e('Could not save user.')); } } else { Session::set_flash('error', $val->error()); } return Response::forge(View::forge('user/index')); }
パスワード一致させるvalidation
パスワードをmatch_valueだけでチェックすると以前のパスワードがエラーメッセージに載るので、以下のようにエラーメッセージを上書きする
$val = Validation::forge('user_validation'); $val->add_field('name', '名前', 'required'); $val->add_field('email', 'Email', 'required|valid_email'); $rule_pass = 'required|min_length[4]|max_length[20]'; $user = \Model_User::find(Input::param('id')); if ($user) { $rule_pass .= '|match_value['.$user->pass.',1]'; } $val->add_field('pass', 'パスワード', $rule_pass); $val->set_message('match_value', '『:label』が以前登録されたもの違います');