使用 laravel 请求类时调用成员函数 fails() on array error
Call to a member function fails() on array error when using laravel Request classses
我正在使用自定义请求 class 进行 laravel 表单验证。
这是我的要求class
class ContactUsRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'lname' => 'required'
];
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'lname.required' => 'please enter the last name'
];
}
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
}
这就是我所说的,
public function send(ContactUsRequest $request) {
$validator = $request->validated();
if ($validator->fails()) {
return redirect('/contactus')
->withErrors($validator)
->withInput();
} else {
ContactUs::create($request->all());
return redirect('/contactus');
}
}
但是当我输入正确的值时,我得到了这个,
Symfony \ Component \ Debug \ Exception \ FatalThrowableError
(E_ERROR) Call to a member function fails() on array
使用表单请求类
如果验证失败,将自动生成重定向响应,将用户送回他们之前的位置。错误也将闪现到会话中,以便它们可供显示。如果请求是 AJAX 请求,将向用户返回带有 422 状态代码的 HTTP 响应,其中包括验证错误的 JSON 表示。
为了捕获验证失败,您可以使用 Validator facade
例如
use Illuminate\Support\Facades\Validator;
//...
public function send(Request $request) {
$validator = Validator::make($request->all(), [
'lname' => 'required'
// ...
]);
if ($validator->fails()) {
return redirect('/contactus')
->withErrors($validator)
->withInput();
}
ContactUs::create($request->all());
return redirect('/contactus');
}
Form Request Validation Documentation
Manually Creating Validators Documentation
我们可以像这样保持 ContactUsRequest。
public function send(ContactUsRequest $request) {
$validator = $request->validated();
ContactUs::create($request->all());
return redirect('/contactus');
}
那是因为请求对象会自动为你做那件事,你不需要手动重定向回来,而且 $validator
变量包含 validated inputs
所以在你的情况下你不需要做任何事情并且您可以删除 if
并安全重定向
public function send(ContactUsRequest $request) {
ContactUs::create($request->validated());
return redirect('/contactus');
}
}
我正在使用自定义请求 class 进行 laravel 表单验证。
这是我的要求class
class ContactUsRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'lname' => 'required'
];
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'lname.required' => 'please enter the last name'
];
}
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
}
这就是我所说的,
public function send(ContactUsRequest $request) {
$validator = $request->validated();
if ($validator->fails()) {
return redirect('/contactus')
->withErrors($validator)
->withInput();
} else {
ContactUs::create($request->all());
return redirect('/contactus');
}
}
但是当我输入正确的值时,我得到了这个,
Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) Call to a member function fails() on array
使用表单请求类
如果验证失败,将自动生成重定向响应,将用户送回他们之前的位置。错误也将闪现到会话中,以便它们可供显示。如果请求是 AJAX 请求,将向用户返回带有 422 状态代码的 HTTP 响应,其中包括验证错误的 JSON 表示。
为了捕获验证失败,您可以使用 Validator facade
例如
use Illuminate\Support\Facades\Validator;
//...
public function send(Request $request) {
$validator = Validator::make($request->all(), [
'lname' => 'required'
// ...
]);
if ($validator->fails()) {
return redirect('/contactus')
->withErrors($validator)
->withInput();
}
ContactUs::create($request->all());
return redirect('/contactus');
}
Form Request Validation Documentation
Manually Creating Validators Documentation
我们可以像这样保持 ContactUsRequest。
public function send(ContactUsRequest $request) {
$validator = $request->validated();
ContactUs::create($request->all());
return redirect('/contactus');
}
那是因为请求对象会自动为你做那件事,你不需要手动重定向回来,而且 $validator
变量包含 validated inputs
所以在你的情况下你不需要做任何事情并且您可以删除 if
并安全重定向
public function send(ContactUsRequest $request) {
ContactUs::create($request->validated());
return redirect('/contactus');
}
}