📅  最后修改于: 2023-12-03 14:50:59.899000             🧑  作者: Mango
在 Laravel 中,您可以轻松地创建自定义规则来验证您的表单输入。这篇文章将介绍如何通过编写自定义规则类来实现此目的。我们将首先学习 Laravel 内置规则的结构,然后实现我们自己的规则类。
Laravel 提供了一组内置规则,可用于验证表单输入。以下是一些 Laravel 提供的内置规则:
每个规则都有一个简短的描述和一组可选的参数。您可以在 Laravel 文档中找到更详细的文档。
现在我们将创建自己的规则类。要创建自定义规则类,您需要创建一个 PHP 类,该类实现 Laravel 的 Illuminate\Contracts\Validation\Rule
接口。这个接口定义了 passes
和 message
方法,我们需要实现这两个方法。
以下是一个示例规则类,该规则将验证输入是否为给定日期之前的日期:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class BeforeDate implements Rule
{
protected $date;
public function __construct($date)
{
$this->date = $date;
}
public function passes($attribute, $value)
{
$date = strtotime($value);
return $date < strtotime($this->date);
}
public function message()
{
return ':attribute must be before ' . $this->date;
}
}
在上面的代码中,我们首先定义了 BeforeDate
类,并在构造函数中接受日期参数。passes
方法将接收要验证的属性和值,并使用 strtotime
函数将时间戳转换为日期,并检查日期是否在给定日期之前。message
方法将返回验证失败时要显示的消息。
我们现在已经创建了我们的自定义规则类,现在我们可以将其用于验证表单输入。
要使用自定义规则,您需要在验证规则中添加它。在 Laravel 中,您可以将规则作为字符串传递,也可以使用数组传递多个规则:
$request->validate([
'date' => [
'required',
new BeforeDate('2022-01-01'),
],
]);
在上面的代码中,我们将 required
规则和自定义 BeforeDate
规则传递给 date
属性验证。
通过创建自己的自定义规则类,您可以扩展 Laravel 内置规则以验证您的表单输入。使用自定义规则可以使您的表单验证更加灵活,适合您的应用程序的特定需求。