我正在验证问题和答案(用于测试创建)。我想确保答案数组至少包含一个“正确”项目。所以class person {
constructor(data) {
this.info = data;
}
welcome(){
return `hello: ${this.info.name} your age is ${this.info.age}`
}
getSalary(){
return this.info.salary;
}
getAge(){
return this.info.age;
}
}
var mario = {
name: "Mario",
age: 30,
salary: 5555,
}
var data = new person(mario);
console.log(data.welcome());
console.log(data.getSalary());
console.log(data.getAge());
。
我目前有以下内容:
answers.*.correct => true
此刻,我可能会错过添加正确答案而导致无法回答的问题。
我检查了文档,看不到任何突出的内容。
任何帮助将不胜感激。
编辑答案
我用了这个(答案中提到):Laravel validate at least one item in a form array
我设法创建了一个自定义规则,如下所示:
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'
];
}
然后在我现有的rules()部分中,针对在我创建的新规则中添加的请求:
public function passes($attribute, $value)
{
foreach ($value as $arrayElement) {
if ($arrayElement['correct'] == true) {
return true;
}
}
return false;
}
答案 0 :(得分:0)
您在这里验证数组答案是否具有
要检查此数组的完整性,Laravel请求是错误的检查位置。从技术上讲,可以创建自己的验证规则,但是在这里没有意义。相反,您应该在控制器中迭代此数组并验证每个答案的完整性。 还有两个想法,可以做得更好:
编辑:感谢您的评论,对我的误解表示抱歉。如上所述,当然,自定义验证在这里对于每个问题检查至少一个答案是否正确是完全有意义的。检查一下:https://stackoverflow.com/a/53791208/2264877