要在Laravel中创建和使用自定义验证规则,您可以遵循以下步骤:
定义自定义规则:
您可以使用规则对象定义自定义验证规则。创建一个扩展Illuminate\Validation\Rules\Rule
新类。例如,如果要验证一个字段包含一个特定单词,则可以创建一个名为ContainsWord
的类。
<code class="php">use Illuminate\Contracts\Validation\Rule; class ContainsWord implements Rule { private $word; public function __construct($word) { $this->word = $word; } public function passes($attribute, $value) { return stripos($value, $this->word) !== false; } public function message() { return "The :attribute must contain the word :word."; } }</code>
使用自定义规则:
要在控制器或表单请求中使用自定义规则,您可以实例化规则并将其传递给validate
方法。
<code class="php">use App\Rules\ContainsWord; $request->validate([ 'title' => ['required', new ContainsWord('Laravel')], ]);</code>
在表单请求中使用自定义规则:
如果您使用的是表单请求,则可以在rules
方法中包括规则。
<code class="php">use App\Rules\ContainsWord; use Illuminate\Foundation\Http\FormRequest; class StorePostRequest extends FormRequest { public function rules() { return [ 'title' => ['required', new ContainsWord('Laravel')], ]; } }</code>
在Laravel中使用自定义验证规则提供了几个好处:
可重复使用:
表现力:
特异性:
一致性:
可检验性:
为了使用您自己的自定义规则扩展Laravel的验证系统,您可以遵循以下方法:
使用规则对象:
Illuminate\Validation\Rules\Rule
类。这是复杂规则的首选方法。使用关闭:
对于简单的规则,您可以在验证规则中定义关闭。
<code class="php">$request->validate([ 'title' => [ 'required', function ($attribute, $value, $fail) { if (stripos($value, 'Laravel') === false) { $fail('The '.$attribute.' must contain the word "Laravel".'); } }, ], ]);</code>
扩展验证器:
您可以扩展Validator
立面以添加可以在整个应用程序中使用的新规则。
<code class="php">use Illuminate\Support\Facades\Validator; Validator::extend('contains_word', function ($attribute, $value, $parameters, $validator) { $word = $parameters[0]; return stripos($value, $word) !== false; }); Validator::replacer('contains_word', function ($message, $attribute, $rule, $parameters) { return str_replace(':word', $parameters[0], $message); });</code>
然后,您可以在验证中使用自定义规则。
<code class="php">$request->validate([ 'title' => 'required|contains_word:Laravel', ]);</code>
有几种资源可以找到有关Laravel中实施自定义验证规则的示例和教程:
Laravel官方文件:
拉卡斯特:
拉维尔新闻:
Github:
堆栈溢出:
Laravel社区博客:
通过利用这些资源,您可以更深入地了解如何有效地在Laravel中实施自定义验证规则。
以上是如何在Laravel中创建和使用自定义验证规则?的详细内容。更多信息请关注PHP中文网其他相关文章!