我有一个复选框列表,如下所示:
完整列表在这里:
我正在使用section_id将它们分组为列/行。这是输入的代码:
<div class="checkbox c-checkbox">
<label>
<input class="{{ $screen->section->slug }}"
type="checkbox"
value="{{ $screen->id }}"
name="screens[]"{{
isset($selected) && in_array($screen->id, $selected)
? ' checked'
: ''
}}><span class="fa fa-check"></span>{{ $screen->name }}
</label>
</div>
到目前为止很好。
我遇到的问题是,我需要要求至少选中标准生物特征识别所要求的以下复选框之一。
我该如何验证呢?
我有一个EventRequest文件,该文件可以处理我的所有验证,并且我在想类似的东西:
'screens.*' => 'nullable|integer|exists:screens,id|max:255|required_without_all:5,6,7',
该代码不起作用,但我希望能清楚地说明我需要确保检查这3个ID之一。或者我需要要求section_id中至少有一项存在于数组中。关于如何执行此操作的想法?
public function rules(Request $request) : array
{
return [
...
'screens.*' => 'nullable|integer|exists:screens,id|max:255',
...
];
答案 0 :(得分:0)
您是否尝试过制定自定义验证规则?
文档:https://laravel.com/docs/5.7/validation#custom-validation-rules
这是我曾经做过的验证码验证器的样本验证器类。 $validator
可以访问其余表单数据。
我使用Validator::extend()
<?php
namespace App\Auth\Validators;
use App\PendingUserActivation;
/**
* Class ActivationTokenExists
*
* @package \App\Auth\Rules
*/
class VerificationCodeValidator implements ValidatorInterface
{
public function passes($attribute, $value, $parameters, $validator)
{
$verification_code = $validator->getData()['verification_code'];
$token = $validator->getData()['token'];
return $this->verify($token, $verification_code);
}
/**
* @param $userToken
* @param $verification_code
* @return bool
*/
public function verify($userToken, $verification_code)
{
$passes = PendingUserActivation::where('token', $userToken)
->where('verification_code', $verification_code)
->exists();
return $passes;
}
/** @return string */
public static function getMessage()
{
return 'We were unable to activate an account using the :attribute provided. Please try again.';
}
/** @return string */
public static function getName()
{
return 'verification_code_valid';
}
}