我正在验证问题和答案(用于测试创建)。我想确保答案数组至少包含一个“正确”项目。那么在哪里answers.*.correct => true。
我目前有以下内容:
public function rules()
{
return [
'title' => 'required|string|max:255',
'test_id' => 'required|integer|exists:tests,id',
'content' => 'required',
'answers' => 'required|array',
'answers.*.text' => 'required|string|max:255',
'answers.*.correct' => 'required|boolean'
];
}
目前,我可能会错过添加正确答案,从而导致不可能的问题。
我检查了文档,但看不到任何突出的内容。
任何帮助,将不胜感激。
编辑答案
我使用了这个(正如答案提到的):Laravel 验证表单数组中的至少一项
我设法创建一个自定义规则,如下所示:
public function passes($attribute, $value)
{
foreach ($value as $arrayElement) {
if ($arrayElement['correct'] == true) {
return true;
}
}
return false;
}
然后在我创建的新规则中添加的请求的现有规则()部分中:
'answers' => ['required', 'array', new ArrayAtLeastOneBoolTrue()],
开满天机