首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel in_array验证规则

Laravel in_array验证规则
EN

Stack Overflow用户
提问于 2016-08-11 04:50:25
回答 4查看 30.1K关注 0票数 25

我已经定义了一个数组

代码语言:javascript
复制
$this->allslots=array('10:00:00', '10:10:00', '10:20:00', '10:30:00', '10:40:00', '10:50:00', '11:00:00', '11:10:00', '11:20:00', '11:30:00', '11:40:00', '11:50:00', '12:00:00', '12:10:00', '12:20:00', '12:30:00', '12:40:00', '12:50:00', '13:00:00', '13:10:00', '13:20:00', '13:30:00', '13:40:00', '13:50:00', '14:00:00', '14:10:00', '14:20:00', '14:30:00', '14:40:00', '14:50:00', '15:00:00', '15:10:00', '15:20:00', '15:30:00', '15:40:00', '15:50:00', '16:00:00', '16:10:00', '16:20:00', '16:30:00', '16:40:00', '16:50:00');

现在,在将数据保存到数据库之前,我要验证给定的输入是否与上述数组的某个值匹配。为此,我正在做这件事

代码语言:javascript
复制
$this->validate($request, [

        'field' => 'required|in_array:$this->allslots',
    ]);

但是,这会为每个输入返回验证错误。那么,我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-11 04:53:34

试试这个:

代码语言:javascript
复制
'field' => 'required|in:' . implode(',', $this->allslots),
票数 54
EN

Stack Overflow用户

发布于 2017-10-06 14:45:21

这比公认的答案更具语义性:

代码语言:javascript
复制
use Illuminate\Validation\Rule;

$this->allslots=array('10:00:00', '10:10:00', '10:20:00', '10:30:00', '10:40:00', '10:50:00', '11:00:00', '11:10:00', '11:20:00', '11:30:00', '11:40:00', '11:50:00', '12:00:00', '12:10:00', '12:20:00', '12:30:00', '12:40:00', '12:50:00', '13:00:00', '13:10:00', '13:20:00', '13:30:00', '13:40:00', '13:50:00', '14:00:00', '14:10:00', '14:20:00', '14:30:00', '14:40:00', '14:50:00', '15:00:00', '15:10:00', '15:20:00', '15:30:00', '15:40:00', '15:50:00', '16:00:00', '16:10:00', '16:20:00', '16:30:00', '16:40:00', '16:50:00');

$request->validate([
    'field' => [
        'required',
        Rule::in($this->allslots)
    ]
]);
票数 34
EN

Stack Overflow用户

发布于 2018-11-23 20:25:05

我找到了一个更好的解决方案。验证in_array期望数组是请求中的参数之一。如果数组中有逗号,则接受的答案将不起作用。要在不创建新规则的情况下使用in_array,只需执行以下操作:

代码语言:javascript
复制
$this->allslots=array('10:00:00', '10:10:00', '10:20:00', '10:30:00', '10:40:00', '10:50:00', '11:00:00', '11:10:00', '11:20:00', '11:30:00', '11:40:00', '11:50:00', '12:00:00', '12:10:00', '12:20:00', '12:30:00', '12:40:00', '12:50:00', '13:00:00', '13:10:00', '13:20:00', '13:30:00', '13:40:00', '13:50:00', '14:00:00', '14:10:00', '14:20:00', '14:30:00', '14:40:00', '14:50:00', '15:00:00', '15:10:00', '15:20:00', '15:30:00', '15:40:00', '15:50:00', '16:00:00', '16:10:00', '16:20:00', '16:30:00', '16:40:00', '16:50:00');

$request['allslots'] = $this->allslots;

validate($request, [

        'field' => 'required|in_array:allslots.*',
    ]);

确保在末尾包含.*

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38883289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档