【发布时间】:2018-08-30 18:48:13
【问题描述】:
我将proengsoft/laravel-jsvalidation 与我通过服务提供者中的Validator::extend(...) 定义的自定义FormRequest 和自定义验证规则结合使用。这很好用。
但是,当我将自定义规则移植到 Laravel 5.5+ 中的新(ish)自定义 Rule 类时,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之前不看$rule对象类型->getMessage($attribute, $rule) 相反,它应该调用 $rule->messages();
我能否以某种方式解决此错误,并将 laravel-jsvalidation 与我的自定义 Rule 和 FormRequest 一起使用 - 或者它是否一定需要我提出拉取请求并希望它会被修复......有一天?我想现在就完成这项工作。
【问题讨论】:
标签: laravel validation jsvalidation