Laravel 拉威尔:为什么验证消息不显示?

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

我在主机上使用Laravel5.4。我的验证方法正在工作,但它不显示消息。我做了显示错误所需的所有操作,但它不起作用

@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.',
        ];
    }
}