【问题标题】:How access validation error messages before sending view?如何在发送视图之前访问验证错误消息?
【发布时间】:2016-01-18 01:38:24
【问题描述】:

在 Laravel 中,当验证失败时,请求被重定向到验证 $errros 的视图。我需要在控制器中访问此消息。访问它们的正确方法是什么?我在验证中使用 Request 类,所以我不能使用:

$validator = Validator::make(...);
$messages = $validator->messages();

【问题讨论】:

    标签: php forms validation laravel laravel-5


    【解决方案1】:

    假设你在重定向时使用了withErrors,你可以直接从会话中自己获取错误信息包:

    $errors = session('errors');
    

    获得错误消息包后,您可以使用$errors->getMessages() 获取消息,或者,要获取平面数组,请使用$errors->all()

    【讨论】:

    • 谢谢,使用它,我可以通过session('errors')->getBags()['default']->toArray() 访问错误数组。我想应该有更好的方法。不是吗?
    • @PHPst - 如果你想要一个平面数组:session('errors')->all()。如果您想要原始格式的消息:session('errors')->getMessages()
    【解决方案2】:

    验证者的消息以$validator->messages() 的形式提供。

    $validator = Validator::make(...);
    $messages = $validator->messages();
    

    【讨论】:

    • 我认为@JosephSilber 的答案是你能得到的最接近的答案。
    【解决方案3】:

    如果您想发回要在页面上查看的消息,请使用重定向发回:

    $validator = Validator::make(Input::all(), $rules);
    if ($validator->fails()) {
        Session::put('failure_message', 'Failure!');
        return Redirect::to('whateverpage')->withErrors($validator)->withInput(Input::all());
    

    如果您想查看生成了什么消息,请先创建一些消息以关闭:

    $messages = array(
        'same'    => 'Your passwords don\'t match.',
        'required' => 'The field ":attribute" is required',
        'alpha'   => 'The field ":attribute" can only contain letters',
        'min'     => 'The field ":attribute" must be ":min" characters or greater.',
    );
    $validator = Validator::make(Input::all(), $rules, $messages);
    $messages = $validator->messages();
    

    【讨论】:

      【解决方案4】:

      这是您可以在控制器中访问错误消息的方式。

      $validator = Validator::make(...);
      $validator->errors()->get('date');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多