У вас есть несколько вариантов.Можно было бы использовать ремесленника для создания правила
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',
]);
Второй вариант - использовать замыкание и не создавать пользовательское правило с ремесленником.Это хорошо работает, если вам не нужно использовать правило где-то еще.
Так что в вашем 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',
]);