📅  最后修改于: 2023-12-03 14:51:00.207000             🧑  作者: Mango
在 Laravel 中,规则(Rules)常用于表单验证、模型验证和请求验证等操作中,用于验证特定字段的值是否符合指定的要求。Laravel 提供了丰富的规则集合和简单的方式来定义自己的规则,让我们更容易地实现数据验证。
Laravel 内置了多种规则用于验证表单、模型和请求等操作,包括但不限于以下内容:
示例,验证请求数据中的名称是否存在:
$validator = \Validator::make($request->all(), [
'name' => 'required|string|max:255',
]);
以上代码将验证请求数据中的 name
字段是否存在,是否为字符串类型,且不超过 255 个字符的长度。
除了 Laravel 提供的内置规则外,我们也可以定义自己的规则来满足业务需求。一个自定义规则对象包含两个方法:passes
和 message
。
passes
方法接收两个参数,第一个参数为字段的名称,第二个参数为要验证的值,如果验证成功则返回 true,否则返回 false。
message
方法返回验证失败的错误信息。
下面是一个自定义规则的示例:
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class Uppercase implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return strtoupper($value) === $value;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The :attribute must be uppercase.';
}
}
以上代码定义了一个名为 Uppercase
的规则,该规则将验证给定的字段是否全部为大写字母。
如果要在验证规则中使用自定义规则,可以使用 Rule
门面类的 dimension
方法来包装自定义规则,例如:
use Illuminate\Validation\Rule;
use App\Rules\Uppercase;
$validator = Validator::make($request->all(), [
'name' => [
'required',
'string',
'max:255',
Rule::dimensions()->width(100)->height(100)->ratio(3 / 2),
new Uppercase,
],
]);
以上代码将验证请求数据中的 name
字段是否存在,是否为指定长度的字符串,是否符合定义的图片尺寸,并且值全部为大写字母。