gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:35:39 30 4
gpt4 key购买 nike

我使用 proengsoft/laravel-jsvalidation结合自定义 FormRequest 和我通过服务提供商中的 Validator::extend(...) 定义的自定义验证规则。这很好用。

但是,当我将我的自定义规则移植到 Laravel 5.5+ 中新的(差不多)自定义规则类时,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();

我能否以某种方式解决这个错误,并将 laravel-jsvalidation 与我的自定义规则和 FormRequest 一起使用——或者它是否一定需要我发出拉取请求并希望它会被修复……总有一天?我想让这项工作现在就开始。

最佳答案

这可以通过传递基于规则和消息数组的JsValidator 实例来存档,而不是传递表单请求。在 Controller 中将此实例传递给 Blade 。阅读here了解更多详情。

JsValidator::make($rules, $messages, $customAttributes, $selector)

在 Controller 中,

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

return View::make("Your view", compact($validator));

在 Blade 中,

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

<form class='wizard_frm'></form>

在这种情况下,我们可以创建请求类的对象,并在需要时将规则函数返回的数组传递给 JsValidator::make

关于laravel - proengsoft/laravel-jsvalidation 如何使用自定义规则消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49409899/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com