facebook twitter hatena line email

「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』が以前登録されたもの違います');


公式サイト

http://fuelphp.com/docs/classes/validation/validation.html