我正在尝试利用对验证的自动处理以及使用多个实体的表单显示错误.
用户可以通过表单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");
解决方法:
只需将实体数组传递给您的表单
$this->Form->create($entities);
您也不必在输入名称中指定型号名称.只是
$this->Form->hidden("$i.field");
并不是
$this->Form->hidden("MyModel.$i.field");