今回は特定のパラメーターが送られてきたときにエラーを返したい!って時に使えるルールを共有。
今回考えていたのは、権限によって入力できない項目を作りたいなあーって思ったんです。
sou,やりたいことは特定のパラメーターを拒否すること!!!
Table of Contents
前提
- Laravel8.x
- validationから特定のパラメーターを拒否する
上記を前提にしますね。
結論
prohibited
というバリデーションルールを利用する。
prohibited
フィールドが空であるか、存在していないことをバリデートします。
https://readouble.com/laravel/8.x/ja/validation.html#rule-prohibited
prohibitedっていうバリデーションルールがあるなんて知らなかったんですが、
このバリデーションルールを利用することで、もし当てはまるパラメータが送られてきた場合はエラーを返すようになります。
では例としてUser作成のFormRequestで確認してみましょう。↓
<?php
namespace App\Http\Requests\User;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; //追加
use Illuminate\Validation\Rules\Password;//追加
class CreateUserRequest extends FormRequest
{
/**
* 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' => ['prohibited'],
'email' => ['required', 'string', 'email', 'max:255', Rule::unique('www_users')],
'password' => ['required', 'string', Password::min(8)->mixedCase()->numbers()],
];
}
}
Code language: HTML, XML (xml)
実際にnameというパラメーターの送信を拒否されることはないかと思いますが、上記のバリデーションを作成した場合に、name
というパラメーターが送られてきたらエラーが返ってくるようになります。
まとめ
laravel validation 拒否
とか調べても全然方法がでてこなかったんでブログに残しました。誰か探している人がいると信じて。
結局Laravelのドキュメントを見に行ったら解決できたというのが…
バリデーションルールってたくさんあるなぁって思いました。