laravel5.2 バリデーションのrequired、全角スペースは許容する
掲題の通り。 なんか設定があるのかは不明。
そもそもrequiredって
- 値がnull
- 値が空文字
- 値がからの配列か、空のCountableオブジェクト
- 値がパスのないアップロード済みファイル
のチェックをする。
値が空文字なのに全角スペースは通る件
通っちゃうんですよねぇ。 なのでカスタムバリデーションで対応。
<?php namespace App\Validator; /** * カスタムバリデータークラス * * @package App\Validator */ class CustomValidation extends \Illuminate\Validation\Validator<?php /** * 全角空白チェック * * @param $attribute * @param $value * @param $parameters * @return bool */ public function validateDoubleSpace($attribute, $value, $parameters) { $strip = trim(mb_convert_kana($value, "s", 'UTF-8')); if (empty($strip)) { return false; } return true; } }
<?php namespace App\Http\Requests; use App\Http\Requests\Request; class CustomRequest extends Request { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'name' => 'required|doubleSpace|max:15', ]; } }
的な。
カスタムバリデートについては
laravel5.2 バリデーションを自作 (カスタムバリデーション) - web開発メモ
なんか自作バリデーションやってくれないんだけど…
たとえば、文字列の中に'test'が入ってるかチェックしたい!みたいな処理を作るとします。これ、どうやらそもそもそのINPUTに値が入ってないと実行してくれないみたい。requiredで引っかかるようなフィールドは実行しないんですね。