gpt4 book ai didi

php - 如何将自定义验证规则添加到默认 Validator::make($data... 在 laravel 中注册?

转载 作者:行者123 更新时间:2023-12-03 23:05:48 24 4
gpt4 key购买 nike

我已在文档中阅读如何创建 new custom validation rule .

我已经制作了一个与示例中类似的版本,但只允许小写。该类被创造性地命名为小写

现在我想将其添加到由 make:auth 生成的 RegisterController 中的验证器列表中。这是我想要将其添加到的列表:

return Validator::make($data, [
'name' => 'required|string|max:255|**ADD MY VALIDATOR HERE**',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);

显然,我缺少一些东西......在文档中它说使用我已经这样做的:

$request->validate([
'name' => ['required', 'string', new Lowercase],
]);

我需要做什么才能将自定义规则添加到上面的列表中?

编辑1:

根据请求,我将显示我创建的规则。它与文档中链接示例中的名称相同,但我已将其名称从大写更改为小写strtoupperstrtolower

public function passes($attribute, $value)
{
return strtolower($value) === $value;
}

最佳答案

您有几个选择。一种是使用 artisan 来制定规则

php artisan make:rule Lowercase

您最终会得到 app\rules\Lowercase.php,您希望它看起来像这样

<?php

namespace App\Rules;

use Auth;
use Illuminate\Contracts\Validation\Rule;

class Lowercase implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
}

/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return strtolower($value) === $value;
}

/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'Must be lowercase!';
}
}

“定义规则后,您可以通过将规则对象的实例与其他验证规则一起传递来将其附加到验证器:”

所以在你的 RegisterController 中

use App\Rules\Lowercase;

return Validator::make($data, [
'name' => ['required', 'string', 'max:255', new Lowercase],
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);

第二个选择是使用闭包,而不用费心与 artisan 一起制定自定义规则。如果您确实不需要在其他地方使用该规则,那么这很有效。

所以在你的 RegisterController 中你可以做这样的事情:

return Validator::make($data, [
'name' => [
'required',
'max:255',
function ($attribute, $value, $fail) {
if (strtolower($value) != $value) {
$fail($attribute.' must be all lowercase.');
}
},
],
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);

关于php - 如何将自定义验证规则添加到默认 Validator::make($data... 在 laravel 中注册?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52333952/

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