我试图利用任何自动处理验证并使用多个实体显示表单错误。
用户可以通过表单UI动态创建多个新实体。数据通过newEntities()
编组:
$this->MyModel->newEntities($data);
我遇到的问题的第一部分是,为了检查任何实体上的验证是否失败,我必须通过检查每个实体来手动完成:
$errors = false;
foreach ($entities as $entity) {
if ($entity->errors()) {
$errors = true;
break;
}
}
if (!$errors) {
// Save...
Cake是否提供了开箱即用的功能,允许您检查newEntities()
是否在其任何实体上验证失败?如果没有,那就不要介意......
主要问题是我如何从各个实体获取错误,然后在相关输入旁边的表单中显示内联。
<?= $this->Form->create(); ?>
我可以传递给create()
以将其链接到实体?目前似乎没有任何方式可以让它知道提交表单后会发生什么,因此不会显示错误。
我的表单输入是使用标准数组表示法创建的,其中$i
来自构建所有实体的表单输入的循环。
$this->Form->hidden("MyModel.$i.field");
答案 0 :(得分:2)
只需将实体数组传递给您的表单
$this->Form->create($entities);
您也不必在输入名称中指定型号名称。简单地
$this->Form->hidden("$i.field");
而不是
$this->Form->hidden("MyModel.$i.field");
答案 1 :(得分:1)
使用newEntity并将其添加到数组中。遍历该数组访问错误()。
$array = [];
$array[] = $TableRegistry->newEntity([
'hi' => 'hey'
]);
foreach($array as $r){
var_dump($r->errors());
}
希望这与您的用例一起使用。我从来没有使用过newEntities,但你也可以对它进行迭代?