关联模型数据的 cakephp 3 表单验证
cakephp 3 form validation for associated model data
我需要有关验证关联模型数据的帮助。我有一个包含用户数据 (UsersTable) 的表单,其中包含来自模型公司的其他字段(用户有许多公司)。
我的表单视图如下所示:
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 验证的 return 错误,CompaniesTable 除外。
你能知道我哪里错了吗?
对于主要模型(用户),您根本不需要在表单中使用模型名称。对于关联模型,约定为小写复数。
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
而不是 if
.
中的 newEntity
我需要有关验证关联模型数据的帮助。我有一个包含用户数据 (UsersTable) 的表单,其中包含来自模型公司的其他字段(用户有许多公司)。
我的表单视图如下所示:
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 验证的 return 错误,CompaniesTable 除外。
你能知道我哪里错了吗?
对于主要模型(用户),您根本不需要在表单中使用模型名称。对于关联模型,约定为小写复数。
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
而不是 if
.
newEntity