Laravel:バリデーションをスマートかつ、任意メッセージを作成
【概要】
1.結論
2.どのようにコーディングするか
3.開発環境
1.結論
FormRequestを作成し、rulesに検証ルールを用いて、messagesメソッドで任意のメッセージを記載する!
2.どのようにコーディングするか
まずFormRequestを作成します。
php artisan make:request HogeRequest
なぜFormRequestを作成するのかというと、その方が機能としてスマートだからです。Controllerにも記載することは可能ですが、コントローラーはViewやModelに指示を送る橋渡し役がメインになります。バリデーションをする役目ではなく、クライアントからリクエストされた際にリクエスト内部でバリデーションの機能を実行した方がスマートだからです。
上記で作成した後にControllerに下記の記載を忘れないでください。
use App\Http\Requests\HogeRequest;
このように記載しないと下記に記載するHogeRequest.phpが機能しません。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class HogeRequest extends FormRequest
{
public function authorize() #---❶
{
if ($this->path() == 'hoge') #---❷
{
return true;
}else{
return false;
}
}
public function rules() #---❸
{
return [
'name' => 'required',
'mail' => 'email',
'age' => 'numeric|between:0,150',
]; #---❹
}
public function messages() #---❺
{
return [
'name.required' => '名前は必須です',
'mail.email' => '適切なemailを入力してください',
'age.numeric' => '年齢は整数で入力してください',
'age.between' => '適切な値を入力してください'
]; #---❻
}
}
❶:authorizeで、FormRequestが許可されているかどうかチェックします。
❷:アクセスしたパスをチェックしています。hoge以外は通さないようにしています。
❸:rulesで、バリデーションの機能を果たしています。
❹:blade.php(view)におけるname要素(name,mail,age)を指定し、検証ルール(required,email,numeric|between)に則ってコーディングしています。
❺:FormRequestのmessagesメソッドをオーバーライドしています。つまり親クラス(FormRequest)のメソッドを子クラス(HogeRequest)で再定義しています。記述していないルールがあった場合は親クラスがそのままレンダリング(英語表記)されます。
❻:❹と同じようにコーディングします。その際に'name要素.検証ルール(❹で設定したルール)' => '任意のメッセージ'を記載すると、アプリ制作者が意図したメッセージを表示できます。
3.開発環境
PHP 7.4.10
Laravel 8.9
Author And Source
この問題について(Laravel:バリデーションをスマートかつ、任意メッセージを作成), 我々は、より多くの情報をここで見つけました https://qiita.com/taka_no_okapi/items/08939a65b71f1e1c3c20著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .