我想让字段名称写成四边形
\n相同的
\n我托盘
\n 'name' => 'regex:/^[\\w\xd8\xa1-\xd9\x8a]+\\s[\\w\xd8\xa1-\xd9\x8a]+\\s[\\w\xd8\xa1-\xd9\x8a]+\\s[\\w\xd8\xa1-\xd9\x8a]+/\nRun Code Online (Sandbox Code Playgroud)\n在英语中所有正确的内容在阿拉伯语中都是错误的
\n正则表达式是正确的我测试它听到 regexr.com/57s61
\n我可以用另一种方式处理 php,那么如何在 laravel 中编写呢?
\nif(count(explode(' ',$name)) < 4)\n {\n $error[] ='enter full name with 4 words';\n }\nRun Code Online (Sandbox Code Playgroud)\n
您可以创建一个自定义规则类来以封装的方式进行自定义验证。
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class NumWords implements Rule
{
private $attribute;
private $expected;
public function __construct(int $expected)
{
$this->expected = $expected;
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$this->attribute = $attribute;
$trimmed = trim($value);
$numWords = count(explode(' ', $trimmed));
return $numWords === $this->expected;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The '.$this->attribute.' field must have exactly '.$this->expected.' words';
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以在验证中的任何地方使用它,如下所示:
public function rules()
{
return [
'name' => [ 'required', 'string', new NumWords(4)],
];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1251 次 |
| 最近记录: |