我有一组看起来有点像这样的模型
我还有一个表单,试图让您以一种形式更新所有这些不同的模型。我对在CakePHP中制作表单的方式有点新,而且我无法在表单中显示验证错误消息。
我的表单看起来像这样:
<?php echo $this->Form->create('Member',array('type' => 'file'));?>
<fieldset>
<?php
echo $this->Form->input('first_name');
echo $this->Form->input('last_name');
?>
</fieldset>
<fieldset>
<?
echo $this->Form->input('MemberAddress.0.line_1');
echo $this->Form->input('MemberAddress.0.city');
echo $this->Form->input('MemberAddress.0.state');
echo $this->Form->input('MemberAddress.0.zip');
?>
</fieldset>
<fieldset>
<?
echo $this->Form->input('MemberAddress.1.line_1');
echo $this->Form->input('MemberAddress.1.city');
echo $this->Form->input('MemberAddress.1.state');
echo $this->Form->input('MemberAddress.1.zip');
?>
</fieldset>
<fieldset>
<?
echo $this->Form->input('Agent.0.agent',array('type'=>'text'));
echo $this->Form->input('Agent.0.agency');
echo $this->Form->input('Agent.0.email');
echo $this->Form->input('Agent.0.phone');
?>
</fieldset>
<fieldset>
<?
echo $this->Form->input('Agent.0.AgentAddress.line_1');
echo $this->Form->input('Agent.0.AgentAddress.city');
echo $this->Form->input('Agent.0.AgentAddress.state');
echo $this->Form->input('Agent.0.AgentAddress.zip');
?>
</fieldset>
<?php echo $this->Form->end('Submit');?>
此表单的要点是用户配置文件(成员),带有两个地址槽(MemberAddress),以及“代理”的联系信息......代理模型是Agent和AgentAddress。我正在为MemberAddresses使用hasMany关系,但只允许用户提供两个地址。
我收到了顶级会员模型的验证消息,但我没有收到相关模型的验证消息。在我的控制器中,我决定不使用saveAll()因为使用MemberAddress.0和MemberAddress.1项,当将第二个MemberAddress(MemberAddress.1)留空时,我将无法保存任何内容。所以我将saveAll()更改为save,将保存逻辑推送到MemberAddress模型,然后从模型中的MemberAddress-&gt; update()调用返回一个布尔值,表示成功或失败。
如何为MemberAddress和代理模型(代理和代理地址)冒泡验证错误消息?
答案 0 :(得分:2)
如果您不想使用saveAll,则只能用于验证,例如:
if($this->Member->saveAll($this->data, array('validate'=>'only'))){
//your custom save function
}
验证的问题是错误需要附加到正确的表单元素,并且当您使用一些自定义保存功能时,错误会附加到MemberAddress.city,而它们需要附加到MemberAddress.0 。市。