我以这种方式收到提交的表格:
$resume->attributes = $_POST['ResumeModel'];
$profile->attributes = $_POST['UserProfile'];
CActiveRecord模型在此之前已从相应的表中正确填充,它们具有正确的数据和全部。
两个模型的数据都存在于$ _POST中,并由表格修改
但似乎对属性属性的赋值仅适用于$ profile而不适用于$ resume
如果我在分配后检查其值,$ profile不会从表单中获取编辑。
模型的定义中是否有某些东西可以导致这种情况?据我所知,这两个模型都是类似的实施
我不明白为什么会这样,有人有线索吗?
谢谢!
答案 0 :(得分:3)
问题是$ resume模型上的某些字段没有任何验证规则,也没有被声明为安全,因此无法安全地批量分配。
参考: http://www.yiiframework.com/doc/guide/form.model#securing-attribute-assignments
答案 1 :(得分:2)
你仔细检查了$ _POST变量吗?要使质量“属性”赋值起作用,数组应采用以下形式:
$_POST = (
'ResumeModel' => (
'data1' => 'something',
'data2' => 'something else',
),
'UserProfile' => (
'data3' => 'yo ho ho',
'data4' => 'bottle of rum',
)
)
如果它看起来像这是错误的:
$_POST = (
'ResumeModel' => (
'data1' => 'something',
'data2' => 'something else',
'data3' => 'yo ho ho',
'data4' => 'bottle of rum',
)
)
要确保表单为每个模型构建正确的$ _POST数组,请确保将$ resume和$ profile模型同时传递到表单中,如下所示:
<?php
$resume=new ResumeModel;
$profile=new UserProfile;
$this->render('yourFormView', array('resume'=>$resume,'profile'=>$profile));
?>
然后,在“yourFormView”中,确保您正在为每个模型正确创建表单字段,如下所示:
<?php $form=$this->beginWidget('CActiveForm'); ?>
<?php echo $form->textField($resume,'data1'); ?>
<?php echo $form->textField($resume,'data2'); ?>
<?php echo $form->textField($profile,'data3'); ?>
<?php echo $form->textField($profile,'data4'); ?>
<?php $this->endWidget(); ?>