我需要有关关联模型数据验证的帮助。我有一个包含用户数据(UsersTable)的表单,其中包含来自模型公司(Users hasMany Companies)的其他字段。
我的表单视图如下:
echo $this->Form->create($contentData);
echo $this->Form->control('User.person_name');
echo $this->Form->control('User.email');
echo $this->Form->control('User.phone');
echo $this->Form->control('Companies.0.company_name');
//I try Companies.company_name too
echo $this->Form->control('Companies.0.nip');
控制器中的动作如下:
$userTable = TableRegistry::get('Users');
$contentData = $userTable->newEntity(null, ['associated' => ['Companies']]);
if ($this->request->is(['post', 'put'])) {
$formData = $this->request->getData();
$contentData = $userTable->newEntity($this->request->getData(),
['validate' => true, 'associated' => ['Companies']]);
pr($contentData->getErrors());
die();
}
不幸的是,调试了UsersTable验证中的返回错误,但CompaniesTable除外。
你能知道,我哪里出错了?
答案 0 :(得分:0)
对于主模型(用户),您完全不需要表格中的模型名称。对于关联的模型,约定为小写复数。
echo $this->Form->control('person_name');
echo $this->Form->control('email');
echo $this->Form->control('phone');
echo $this->Form->control('companies.0.company_name');
echo $this->Form->control('companies.0.nip');
不相关的注释:您初始化$formData
但从不使用它,您不需要将任何参数传递给第一个newEntity
调用,典型的用法是使用patchEntity
而不是newEntity
内的if
。