验证匹配字符串

问题描述 投票:0回答:3

当我在 Laravel 中使用验证功能时,如何添加输入中允许的预定义字符串?

例如,假设我希望输入仅包含以下内容之一:

foo,bar,baz
,我该怎么做?

$validator = Validator::make($credentials, [
      'profile' => 'required|max:255', // Here I want Predefined allowed values for it
]);
php laravel laravel-validation
3个回答
46
投票

最好使用像这样的“in”验证规则:

$validator = Validator::make($credentials, [
      'profile' => ["required" , "max:255", "in:foo,bar,baz"]  
]);

26
投票

Laravel 文档中建议当验证规则变大时将其放入数组中,我认为 3 条规则就足够了。我认为这使得内容更具可读性,但你不必这样做。我添加了下面的

regex
部分,并且可以正常工作。我不太擅长调整东西。让我知道。

$validator = Validator::make($credentials, [
      'profile' => ["required" , "max:255", "regex:(foo|bar|baz)"]  
]);

0
投票

在 Laravel 9 中为我工作:

use Illuminate\Validation\Rule;
 
Validator::make($data, [
    'toppings' => [
        'required',
        Rule::notIn(['sprinkles', 'cherries']),
    ],
]);

文档:https://laravel.com/docs/9.x/validation#rule-not-in

相反,你可以使用

Rule::in(['foo', 'bar', 'baz'])

© www.soinside.com 2019 - 2024. All rights reserved.