Get 方法的 FromRequest 验证不起作用 -Laravel
FromRequest Validation for Get Method is not working -Laravel
我正在使用 FormRequest 方法进行请求验证。
我正在使用 GET 方法。一切似乎都是正确的,但验证不起作用。
我的控制器
use App\Http\Requests\V1\Admin\Create\SubToTop\TheSubject\UpdateTheSubjectRequest;
use Illuminate\Http\Request;
public function store(TheSubjectStoreRequest $request)
{
return 'Hello';
}
我的表单请求
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"
]
}
** 我在某处读到 FormRequest 不适合 GET method.Then 我如何验证 GET(传统方法除外)
请帮忙
您不能对 GET 请求使用表单验证,因为它验证请求正文,而 GET 请求没有正文。
要验证查询字符串(?
之后的 URL 部分),您需要使用一个中间件,它会在出现问题时中止请求。
<?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);
}
}
由于此验证可能特定于控制器,因此您还可以在控制器中定义一个 Closure 中间件 __construct
public function __construct()
{
$this->middleware(function ($request, $next) {
$subjectCode = $request->route()->param('subject_code');
//Your validation logic
return $next($request);
}
要在 GET 方法参数上定义一些验证规则,您可以在 [=13= 上的路由定义末尾使用 ->where('A' => '[0-9]+') ] 页
我正在使用 FormRequest 方法进行请求验证。 我正在使用 GET 方法。一切似乎都是正确的,但验证不起作用。 我的控制器
use App\Http\Requests\V1\Admin\Create\SubToTop\TheSubject\UpdateTheSubjectRequest;
use Illuminate\Http\Request;
public function store(TheSubjectStoreRequest $request)
{
return 'Hello';
}
我的表单请求
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"
]
}
** 我在某处读到 FormRequest 不适合 GET method.Then 我如何验证 GET(传统方法除外)
请帮忙
您不能对 GET 请求使用表单验证,因为它验证请求正文,而 GET 请求没有正文。
要验证查询字符串(?
之后的 URL 部分),您需要使用一个中间件,它会在出现问题时中止请求。
<?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);
}
}
由于此验证可能特定于控制器,因此您还可以在控制器中定义一个 Closure 中间件 __construct
public function __construct()
{
$this->middleware(function ($request, $next) {
$subjectCode = $request->route()->param('subject_code');
//Your validation logic
return $next($request);
}
要在 GET 方法参数上定义一些验证规则,您可以在 [=13= 上的路由定义末尾使用 ->where('A' => '[0-9]+') ] 页