Php Laravel 5.1:带有自定义错误消息的自定义验证器

Php Laravel 5.1:带有自定义错误消息的自定义验证器,php,validation,laravel,laravel-5,Php,Validation,Laravel,Laravel 5,我是Laravel的新手,我尝试构建一个应用程序,在某种程度上,我有一个表单,其中我有一个数组字段集,允许最终用户输入他想要的任何信息 我的表单字段如下所示: <div class="rule"> <div class="target"> <select name="rule[0][0][target]" id="target_NSBYS" class="form-control"> <option va

我是Laravel的新手,我尝试构建一个应用程序,在某种程度上,我有一个表单,其中我有一个数组字段集,允许最终用户输入他想要的任何信息

我的表单字段如下所示:

<div class="rule">
    <div class="target">

        <select name="rule[0][0][target]" id="target_NSBYS" class="form-control">
            <option value="url">URL</option>
            <option value="referrer">Referrer</option>
        </select>
    </div>
    <div class="condition">
        <select name="rule[0][0][condition]" id="condition_NSBYS" class="form-control">
            <option value="equals">Equals</option>
            <option value="contains">Contains</option>
            <option value="starts_with">Starts With</option>
            <option value="ends_with">Ends With</option>
            <option value="regex">Matches RegExp</option>
            <option value="not_equal">Doesn't Equal</option>
            <option value="not_contains">Does not contain</option>
            <option value="not_starts_with">Does not start with</option>
            <option value="not_ends_with">Does not end with</option>
            <option value="not_regex">Does not match RegExp</option>
        </select>
    </div>
    <div class="rule">
        <input type="text" id="rule_NSBYS" name="rule[0][0][rule]" placeholder="Rule value" value="" class="form-control">
    </div>
    <div class="actions">
        <a href="javascript:void(0)" class="removeRule btn btn-sm btn-default">-</a>
        <a href="javascript:void(0)" class="addRule btn btn-sm btn-default">+</a>
    </div>
</div>
<?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator;

class CustomValidationRules extends ServiceProvider
{
    public function boot()
    {
        Validator::extend(
            'campaign_rules',
            function ( $attribute, $value, $parameters ) {

                $valid = true;

                foreach ( $value as $group_id => $group_fields ) {

                    foreach ( $group_fields as $field_id => $field_set ) {
                        $result = Validator::make(
                            $field_set,
                            array(
                                'target'    => 'required|in:url,referrer',
                                'condition' => 'required|in:equals,contains,starts_with,ends_with,regex,not_equal,not_contains,not_starts_with,not_ends_with,not_regex',
                                'rule'      => 'required'
                            ),
                            array(
                                'target.required' => sprintf(
                                    'The target field in the %d rules group, in the %d rule it is required',
                                    $group_id,
                                    $field_id
                                ),
                                'target.in' => sprintf(
                                    'The target field in the %d rules group, in the %d rule contains a wrong value',
                                    $group_id,
                                    $field_id
                                ),
                                'condition.required' => sprintf(
                                    'The conditional field in the %d rules group, in the %d rule it is required',
                                    $group_id,
                                    $field_id
                                ),
                                'condition.in' => sprintf(
                                    'The conditional field in the %d rules group, in the %d rule contains a wrong value',
                                    $group_id,
                                    $field_id
                                ),
                                'rule.required' => sprintf(
                                    'The rule field in the %d rules group, in the %d rule can\'t be empty',
                                    $group_id,
                                    $field_id
                                )
                            )
                        );

                        if ( $result->fails() ) {
                            $valid = false;

                            break 1;
                            break 2;
                        }
                    }
                }

                return $valid;
            }
        );
    }
}
这可不好。正如您已经看到的,在服务提供者中,当我使用Validator::make时,我使用第三个参数,以返回正确的错误消息


因此,问题是,如何在应用程序前端发送此自定义错误消息?

尝试覆盖FormRequest中的
messages()
方法,如下所示:

public function messages()
{
    return [
        'validation.campaign_rules' => 'My custom validation message',
    ];
}

为什么
rule.rule.required
?是否应该是
规则。活动规则
?在5.1中,我认为消息是在语言文件中设置的。它只是一个过期信息,我忘了删除它。我尝试了很多想法,但都没有成功:(你知道如何解决这个问题吗?在这种情况下,我建议检查你的验证语言文件,英文版本是
resources/lang/en/validation.php
。有一个数组可以添加自定义验证规则。@MerianosNikos你仍然有这个问题吗?如果没有,我很想知道你是如何解决的。)很遗憾,我没有。我不知道如何解决这个问题。请确保如果我能找到解决方案,我会在这里发布;)
Errors occurred
    validation.campaign_rules
public function messages()
{
    return [
        'validation.campaign_rules' => 'My custom validation message',
    ];
}