Help us understand the problem. What is going on with this article?

【PHP】Valitronを用いたvalidation実装

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で回して表示します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away