Php 如何绕过Laravel中验证消息内的多重验证属性值?

Php 如何绕过Laravel中验证消息内的多重验证属性值?,php,laravel,multilingual,customvalidator,laravel-validation,Php,Laravel,Multilingual,Customvalidator,Laravel Validation,我制作了一个自定义验证器,用于比较两个日期,我想向用户显示一条消息,其中指出一个日期(在我的示例中为invoicedate)必须早于另一个日期(在我的示例中为截止日期) 在我的自定义验证器中,我写道: public static validateInfo(Request $request) { $validator = Validator::make($request->all(), [ 'referencenumber' => 'required|min:2

我制作了一个自定义验证器,用于比较两个日期,我想向用户显示一条消息,其中指出一个日期(在我的示例中为
invoicedate
)必须早于另一个日期(在我的示例中为
截止日期

在我的自定义验证器中,我写道:

public static validateInfo(Request $request)
{
    $validator = Validator::make($request->all(), [
        'referencenumber' => 'required|min:2|max:64',
        'invoicedate' => 'required|date',
        'deadline' => 'null|date'
    ]);
    $validator->after(function ($validator) use ($request) { // custom static function where I compare two dates using strtotime(), if invoicedate and deadline are still valid, and return false or true
        if (InvoiceValidator::invalidDeadline($validator, $request)) {
            $validator->errors()->add('deadline', __('validation.negative_date_difference', [
                'attribute1' => 'deadline',
                'attribute2' => 'invoicedate'
            ]));
        }
    });
    return $validator;
}

resources\lang\en\validation.php中我写道:

<?php
return [
    // ...
    'negative_date_difference'  => 'The :attribute1 may not be earlier than the :attribute2.',
    // ...
    'attributes' => [
        'referencenumber' => 'Reference Number', // This works. It's fine
        'invoicedate' => 'Invoice Date' // But this does not work, of course, because I wrote $validator->errors()->add('deadline'...); so the deadline is the only targetted attribute name here
    ],
]

resources\lang\en\messages.php中我添加了一条新消息:

<?php
return [
    'invoice_date' => 'Invoice Date'
]

还没有这样做吗?我不知道。你的意思是什么?类似于
$rules=[“invoicedate”=>“before:”.$request->deadline]
的东西,如果
invoicedate失败,则必须在
之前。自定义消息的占位符将是发票日期的
:属性,另一日期的
:日期
。好的。。。我试试看。非常感谢。我已经找到了一个有效的解决方案(目前),但我也会尝试您的解决方案。
if (InvoiceValidator::invalidDeadline($validator, $request)) {
    $validator->errors()->add('deadline', __('validation.negative_date_difference', [
        'attribute1' => 'deadline',
        'attribute2' => __('messages.invoice_date') // This works
    ]));
}