如何制作所需的几个字段之一?

我的雄辩模型由30个字段组成。如何制作所需的几个字段之一?

验证规则:

  1. 的第一个字段需要
  2. 出了其他29个字段,所述至少一个字段是需要

检查Laravel 5.5的文档,我发现required_without_all验证规则相当可信。编写上述验证规则的一种方法是在29个字段中的每一个中指定required_without_all:field1,.....,field28(即除第一个和给定字段之外的其他字段)

但是,这要求在验证规则中写入28个字段名称除第一个之外的所有领域。有没有更简单的,非冗余的方法?

回答:

您仍然可以使用required_without_all,但要保持它的可维护性,你可以做这样的事情在相关Request类:

public function rules() 

{

$rules = [

'name' => 'required',

'email' => 'required|email'

];

$fields = collect(['field1', 'field2', ...., 'field29']);

foreach ($fields as $field) {

$rules[$field] = 'required_without_all:' . implode(',', $fields->whereNotIn(null, [$field])->toArray());

}

return $rules;

}

回答:

使用after validation hook

$validator = Validator::make($request->all(), [ 

'field1' => 'required',

]);

$validator->after(function ($validator) {

if (!$this->additionalRule()) {

$validator->errors()->add('field2', 'At least one additional field has to be set!');

}

});

if ($validator->fails()) {

//

}

在additionalRule()方法,你可以把这样的东西:

if (isset($field2, field3,...field29)) {// at least one field is set 

return !empty($field2 || field3 || ... || field29);

}

return false;

以上是 如何制作所需的几个字段之一? 的全部内容, 来源链接: utcz.com/qa/266659.html

回到顶部