LoginSignup
0
1

More than 3 years have passed since last update.

【PHP】Valitronを用いたvalidation実装

Posted at

php初心者の頃はよくわからなかったけど使っていくうちに使いやすさに惚れたバリデーションライブラリです。

環境

・PHP 7.3.18
・composerインストール済み

導入

composerを用いてインストールします。
(公式github:https://github.com/vlucas/valitron#installation)

php composer.phar require vlucas/valitron

実装

・入力フォーム等でPOST送信がされた際に以下実行
・$_POST送信で送られてきたname属性を指定します。

$v = new \Valitron\Validator($_POST);
//'required'で入力必須項目を指定、message()にてエラー時の出力文字を指定します
$v->rule('required', ['name', 'nameKana', 'phoneNumber', 'emailAddress'])->message('※{field}が未入力です。');
$v->rule('required', 'agreement')->message('※{field}の同意にチェックを入れてください。');
$v->rule('required', 'gender')->message('※{field}を選択してください。');

//上記'required'部分をemailにすることでメールアドレスの指定も可能
$v->rule('email', 'emailAddress')->message('※{field}を正しく入力してください。');
//'regex'で数字を指定
$v->rule("regex", "phoneNumber", "/\A0[0-9]{9,10}\z/")->message('※{field}を正しく入力してください。');

//validationエラー時、上記で指定したname属性部分を予め日本語にしておけば日本語で出力されます。
$v->labels([
  'name' => 'お名前',
  'nameKana' => 'フリガナ',
  'emailAddress' => 'メールアドレス',
  'gender' => '性別',
  'phoneNumber' => '電話番号',
  'agreement' => '個人情報保護方針'
]);
//上記続き
if ($v->validate()) {
  //バリデーションOK時の挙動(送信確定画面に遷移等)
}else{
  $errors = $v->errors();
  //バリデーションNG時の挙動(再入力画面に遷移等)
}

validationエラー時、$errorsは配列で返ってくるのでhtml側でforeachで回して表示します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1