如何在laravel验证中使用OR



有一个带有选择字段的窗体"状态";,其值必须是"0";草稿";或";出版";。怎么做?现在不起作用。

$this->validate($request, [
'name' => 'required|unique:article_categories' . $category->id,
'description' => 'required|min:200',
'state' => 'draft' || 'published'
]);

您必须使用规则::in([](

$this->validate($request, [
'name' => 'required|unique:article_categories' . $category->id,
'description' => 'required|min:200',
'state' => [
'required',
Rule::in(['draft', 'published']),
]
]);

您已经回答了自己的问题,但只是添加了一个问题:'draft' || 'published'在PHP中评估为true

意味着你实际上在做这件事:

$this->validate($request, [
....
'state' => true
]);

就验证规则中所期望的内容而言,这毫无意义。

正确的方法是如你所说:

$this->validate($request, [
...
'state' => [
'required',
Rule::in(['draft', 'published']),
]
]);

最新更新