'FromRequest Validation for Get Method is not working -Laravel
I am doing request validation using FormRequest Method. I am using GET method. All things seems correct but validation is not working. My Controller
use App\Http\Requests\V1\Admin\Create\SubToTop\TheSubject\UpdateTheSubjectRequest;
use Illuminate\Http\Request;
public function store(TheSubjectStoreRequest $request)
{
return 'Hello';
}
My FormRequest
use Illuminate\Foundation\Http\FormRequest;
class ShowTheSubjectRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'subject_code' => 'required|exists:the_subjects,sub_x',
];
}
public function messages()
{
return [
'subject_code.required' => 'Required,Can\'t Be Empty',
'subject_code.exists' => 'Entry does\'t exist with us.Choose Correct'
];
}
Message
"message": "The given data was invalid.",
"errors": {
"subject_code": [
"Required,Can't Be Empty"
]
}
** I read somewhere FormRequest is not good for GET method.Then How can I validate for GET (except traditional method)
Please Help
Solution 1:[1]
You can't use form validation on GET request because it validates the request body, and GET requests have no body.
To validate the query string (the URL part after ?), you need to use a middleware which would abort the request whenever something goes wrong.
<?php
namespace App\Http\Middleware;
use Closure;
class ValidateSubjectCode
{
public function handle($request, Closure $next)
{
$subjectCode = $request->route()->param('subject_code');
//Your validation logic
return $next($request);
}
}
Because this validation is probably specific to a controller, you could also define a Closure middleware into your controller __construct
public function __construct()
{
$this->middleware(function ($request, $next) {
$subjectCode = $request->route()->param('subject_code');
//Your validation logic
return $next($request);
}
Solution 2:[2]
To define some validation rules on GET method parameters, you can use ->where('A' => '[0-9]+') at the end of your Route definition on web.php page
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Saber Fazliahmadi |
