Laravel验证器需要特定的单词



我需要验证一个字符串,该字符串必须包含控制器中的特定单词。像这样的东西("%name%"是必要的(:

$request->validate([
'pattern' => ['required', 'must_contains:%name%'],
]);

您可以创建自定义规则。要创建自定义规则,您可以执行以下操作:

php artisan make:rule StrMustContain

像这样设置类:

<?php
namespace AppRules;
use IlluminateContractsValidationRule;
class StrMustContain implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param  string  $attribute
* @param  mixed  $value
* @return bool
*/
public function passes($attribute, $value)
{
return str_contains('Magic Phrase', $value);
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The expected pattern does not match.';
}
}

然后你可以使用类似:

$request->validate([
'pattern' => ['required', new StrMustContain],
]);

我使用以下命令创建了一个自定义验证:

php artisan make:rule StrMustContain

然后像这样改变了类别:

<?php
namespace AppRules;
use IlluminateContractsValidationRule;
class StrMustContain implements Rule
{
public $str;
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct($str)
{
$this->str = $str;
}
/**
* Determine if the validation rule passes.
*
* @param  string  $attribute
* @param  mixed  $value
* @return bool
*/
public function passes($attribute, $value)
{
return str_contains($value, $this->str);
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The phrase '.$this->str.' is required.';
}
}

然后我用了这个:

$request->validate([
'pattern' => ['required', new StrMustContain('%name%')],
]);

最新更新