cakephp 3表单验证相关模型数据

时间:2018-07-16 21:08:39

标签: validation associations cakephp-3.x

我需要有关关联模型数据验证的帮助。我有一个包含用户数据(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除外。

你能知道,我哪里出错了?

1 个答案:

答案 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