【Laravel8】validationで特定パラメーターを拒否

今回は特定のパラメーターが送られてきたときにエラーを返したい!って時に使えるルールを共有。

今回考えていたのは、権限によって入力できない項目を作りたいなあーって思ったんです。

sou,やりたいことは特定のパラメーターを拒否すること!!!

目次

前提

  • 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のドキュメントを見に行ったら解決できたというのが…

バリデーションルールってたくさんあるなぁって思いました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA