proengsoft/laravel jsvalidation如何使用自定义规则消息?

proengsoft/laravel jsvalidation如何使用自定义规则消息?,laravel,validation,jsvalidation,Laravel,Validation,Jsvalidation,我在服务提供者中通过Validator::extend(…)定义的自定义FormRequest和自定义验证规则中结合使用。这很有效 但是,当我将自定义规则移植到Laravel 5.5+中的新(ish)自定义规则类时,JsValidator无法获取自定义规则消息 我有一个习惯规则: use Illuminate\Contracts\Validation\Rule; class MyRule implements Rule { public function passes($attrib

我在服务提供者中通过Validator::extend(…)定义的自定义FormRequest和自定义验证规则中结合使用。这很有效

但是,当我将自定义规则移植到Laravel 5.5+中的新(ish)自定义规则类时,JsValidator无法获取自定义规则消息

我有一个习惯规则:

use Illuminate\Contracts\Validation\Rule;

class MyRule implements Rule 
{
    public function passes($attribute, $value) {
        return $value > 10;
    }
    public function message() {
        return 'Your :attribute is pretty small, dawg!';
    }
}
我的表单请求使用以下规则:

use Illuminate\Foundation\Http\FormRequest;
use App\Rules\MyRule;

class MyRequest extends FormRequest 
{
    public function authorize() {
        return true;
    }
    public function rules() {
        $rules = [
            'foo' => 'required|numeric',
            'bar' => ['required', new MyRule()],
        ];
        return $rules;
    }
}
这应该行得通,但我在上被抛出了一个异常

{!! JsValidator::formRequest('\App\Http\Requests\MyRequest') !!}
Proengsoft\JsValidation\Javascript\MessageParser.php对Str::snake(Object(App\Rules\MyRule))的调用引发异常

JsValidation在调用Validator->getMessage($attribute,$rule)之前不会查看$rule对象类型 相反,它应该调用$rule->messages()


我可以设法解决这个bug,并将laravel jsvalidation与我的自定义规则和FormRequest一起使用吗?或者它是否一定需要我发出一个请求并希望它得到修复。。。有一天?我想现在就开始工作。

这可以通过基于规则和消息数组传递JsValidator实例来存档,而不是传递表单请求。在控制器中,将此实例传递给刀片服务器。阅读更多细节

JsValidator::make($rules, $messages, $customAttributes, $selector)
在控制器中

$validator = JsValidator::make(
    [
        'name' => 'required',
    ],
    [
        'name.required' => 'Name field is a required field',
    ]
)

return View::make("Your view", compact($validator));
在刀刃上

{!! $validator->selector('.wizard_frm') !!}

<form class='wizard_frm'></form>
{!!$validator->选择器('.wizard\u frm')
在这种情况下,我们可以创建请求类的对象,并根据需要将规则函数返回的数组传递给
JsValidator::make