Laravel 拉威尔:为什么验证消息不显示?
我在主机上使用Laravel5.4。我的验证方法正在工作,但它不显示消息。我做了显示错误所需的所有操作,但它不起作用Laravel 拉威尔:为什么验证消息不显示?,laravel,Laravel,我在主机上使用Laravel5.4。我的验证方法正在工作,但它不显示消息。我做了显示错误所需的所有操作,但它不起作用 @if($errors->has('recipient')) <div class="form-group"> <label class="col-lg-2 control-label"></label> <div class="col-lg-10"> <div cl
@if($errors->has('recipient'))
<div class="form-group">
<label class="col-lg-2 control-label"></label>
<div class="col-lg-10">
<div class="alert alert-danger">
<ul>
@foreach ($errors->get('recipient') as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
我的验证程序代码:
protected function validator(array $data)
{
return Validator::make($data, [
"$this->recipient" => [
'sometimes',
'required',
'email',
'exists:users,email',
Rule::notIn([auth()->user()->email])
],
"$this->subject" => 'sometimes|required|min:10',
"$this->message" => 'sometimes|required|min:50',
], $this->validator_messages());
}
我的路线:
Route::get('/compose', 'InboxController@compose') ->name('compose');
Route::post('/compose', 'InboxController@send');
转储的结果($errors)
:
您需要更改:
"$this->recipient"
"$this->subject"
"$this->message"
致:
已编辑 要解决当前问题,请将
$errors->get('recipient')
更改为$errors->all()
应该是这样的:
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
之后,您可以将类型从Request更改为CustomRequest
public function send(CustomRequest $request)
{
$this->create($request->all());
return redirect($this->redirectToAfterSendMessage);
}
在CustomRequest.php中,提取验证逻辑,如下所示:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CustomRequest 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' => 'required',
'email' => 'required',
'message' => 'required',
];
}
public function messages()
{
return [
'name.required' => 'Name is required.',
'email.required' => 'Email is required.',
'message.required' => 'Message is required.',
];
}
}
请包括执行验证的代码以及控制器方法。请显示{{dd($errors)}
为什么使用“$this->recipient”
?仅使用“收件人”
!它应该对你有用!我已删除但未工作显示消息,$errors返回null。但是验证正在工作。在我的本地站点中,$this->recipient
也在工作。在主机上也可以运行此代码,但不会返回messages@MaxNet我更新了我的答案。如果它解决了你的问题,请记下我的答案是正确的。如果有帮助,请投票表决。如果你还有什么问题,告诉我。
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
php artisan make:request CustomRequest
public function send(CustomRequest $request)
{
$this->create($request->all());
return redirect($this->redirectToAfterSendMessage);
}
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CustomRequest 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' => 'required',
'email' => 'required',
'message' => 'required',
];
}
public function messages()
{
return [
'name.required' => 'Name is required.',
'email.required' => 'Email is required.',
'message.required' => 'Message is required.',
];
}
}