使用 $validator->errors->add() 来自自定义验证器函数内部的 Laravel 自定义错误消息

阿米特·沙阿

我有自定义验证规则appointment_status我正在对其执行各种测试用例,并决定最好的错误消息和回退。每个人都会有所不同case我想要$validator->errors()->add('status', __('Invalid status for an appointment in past')设置错误消息并添加它。但它不会返回控制器。我无法在任何地方访问此消息。它只显示status.appointment_statusmessages()功能中设置的那个

自定义请求类:

namespace Modules\ShopManager\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class AppointmentsRequest extends FormRequest
{

    public function __construct()
    {
        \Validator::extend('appointment_status', 'Modules\ShopManager\Validators\CustomValidator@appointmentStatus');

    }
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        $rules = [
            'services' => 'required',
            'sdate' => 'required|date_format:m-d-Y|time_range:sTime,edate,eTime,timezone',
            'edate' => 'required|date_format:m-d-Y|workinghours_range:sdate,sTime,edate,eTime,timezone',
            'sTime' => 'required|date_format:h:i a',
            'eTime' => 'required|date_format:h:i a',
            'cname' => 'required',
            'cphone' => 'required_without:cemail',
            'cemail' => 'nullable|required_without:cphone|email',
            'timezone' => 'required',
            'status' => 'required|appointment_status:sdate,sTime,edate,eTime,timezone',
        ];


        return $rules;

    }

    public function messages()
    {
        return [
            'status.appointment_status' => 'Invalid status'
        ];
    }

    public function attributes()
    {
        return [
            'services' => 'Services',
            'date' => 'Date',
            'sTime' => 'Start Time',
            'eTime' => 'End Time',
            'cname' => 'Customer name',
            'cphone' => 'Customer phone',
            'cemail' => 'Customer email',
            'internal_note' => 'Internal note',
            'status' => 'Status',
        ];
    }

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }
}

自定义验证器函数:

public function appointmentStatus($attribute, $value, $parameters, $validator)
    {
        $dateTimeOperations = new DateTimeOperations;

        $sdate = array_get($validator->getData(), $parameters[0]);
        $startTime = array_get($validator->getData(), $parameters[1]);
        $edate = array_get($validator->getData(), $parameters[2]);
        $endTime = array_get($validator->getData(), $parameters[3]);
        $timezone = array_get($validator->getData(), $parameters[4]);

        $now = $dateTimeOperations->getNow($timezone);
        $start = $dateTimeOperations->getTimestamp($sdate, $startTime, $timezone);
        $end = $dateTimeOperations->getTimestamp($edate, $endTime, $timezone);

        switch ($value) {
            case constants('appointments.status.pendig'):
                $start->lessThan($now)
                ? $validator->errors()->add('status', __('Invalid status for an appointment in past'))                
                : '';
        }

        return $validator->errors()->any();
    }

仅向字段添加错误而不指定我认为不起作用的规则,这就是验证请求中的消息优先的原因。

所以把它改成这样:

$validator->errors()->add('status.appointment_status', __('Invalid status for an appointment in past'))

而且在您的情况下,您是否可能有错别字:pendig成为pending

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel 4-使用自定义消息处理404

来自分类Dev

Laravel自定义验证消息

来自分类Dev

使用Struts 2 XML验证的自定义验证器错误消息

来自分类Dev

使用自定义方法模型laravel删除记录错误

来自分类Dev

如何将自定义验证消息传递给laravel中的cviebrock / image-validator?

来自分类Dev

如何使用github.com/1000hz/bootstrap-validator的自定义验证器

来自分类Dev

Laravel中的自定义验证消息

来自分类Dev

Laravel扩展验证自定义消息

来自分类Dev

在没有spring的情况下如何在Hibernate Validator中使用自定义错误消息?

来自分类Dev

如何使用jQuery.validator占位符来自定义错误消息?

来自分类Dev

使用自定义消息处理错误?

来自分类Dev

laravel中`requiredIf`验证的自定义错误消息

来自分类Dev

laravel上的自定义验证消息

来自分类Dev

使用tryCatch的函数中的自定义错误消息

来自分类Dev

Laravel验证消息包含“验证”。而不是自定义错误消息

来自分类Dev

如何使用Thymeleaf显示自定义错误消息?

来自分类Dev

如何使用JSRuntime创建自定义错误消息?

来自分类Dev

如何使用自定义错误消息触发BSoD

来自分类Dev

扩展的自定义验证器类的Laravel错误消息

来自分类Dev

使用Laravel 5.1自定义注册

来自分类Dev

可以将多个错误消息返回到asp:ValidationSummary的自定义asp:Validator

来自分类Dev

如何使用自定义请求验证laravel数组?

来自分类Dev

Laravel自定义错误消息无法正确返回

来自分类Dev

在Laravel验证程序中为嵌套属性使用自定义错误消息

来自分类Dev

使用Jquery验证添加自定义错误消息

来自分类Dev

Laravel自定义验证消息

来自分类Dev

在 Laravel 5.6 中使用自定义 JavaScript 函数

来自分类Dev

Laravel:使用 Validator::extend 内联自定义错误消息

来自分类Dev

Laravel - 自定义使用 Rule 类的错误消息

Related 相关文章

  1. 1

    Laravel 4-使用自定义消息处理404

  2. 2

    Laravel自定义验证消息

  3. 3

    使用Struts 2 XML验证的自定义验证器错误消息

  4. 4

    使用自定义方法模型laravel删除记录错误

  5. 5

    如何将自定义验证消息传递给laravel中的cviebrock / image-validator?

  6. 6

    如何使用github.com/1000hz/bootstrap-validator的自定义验证器

  7. 7

    Laravel中的自定义验证消息

  8. 8

    Laravel扩展验证自定义消息

  9. 9

    在没有spring的情况下如何在Hibernate Validator中使用自定义错误消息?

  10. 10

    如何使用jQuery.validator占位符来自定义错误消息?

  11. 11

    使用自定义消息处理错误?

  12. 12

    laravel中`requiredIf`验证的自定义错误消息

  13. 13

    laravel上的自定义验证消息

  14. 14

    使用tryCatch的函数中的自定义错误消息

  15. 15

    Laravel验证消息包含“验证”。而不是自定义错误消息

  16. 16

    如何使用Thymeleaf显示自定义错误消息?

  17. 17

    如何使用JSRuntime创建自定义错误消息?

  18. 18

    如何使用自定义错误消息触发BSoD

  19. 19

    扩展的自定义验证器类的Laravel错误消息

  20. 20

    使用Laravel 5.1自定义注册

  21. 21

    可以将多个错误消息返回到asp:ValidationSummary的自定义asp:Validator

  22. 22

    如何使用自定义请求验证laravel数组?

  23. 23

    Laravel自定义错误消息无法正确返回

  24. 24

    在Laravel验证程序中为嵌套属性使用自定义错误消息

  25. 25

    使用Jquery验证添加自定义错误消息

  26. 26

    Laravel自定义验证消息

  27. 27

    在 Laravel 5.6 中使用自定义 JavaScript 函数

  28. 28

    Laravel:使用 Validator::extend 内联自定义错误消息

  29. 29

    Laravel - 自定义使用 Rule 类的错误消息

热门标签

归档