将Yii中的表单数据获取到CActiveRecord模型适用于一个模型,但不适用于另一个模型

将Yii中的表单数据获取到CActiveRecord模型适用于一个模型,但不适用于另一个模型,activerecord,forms,model,yii,Activerecord,Forms,Model,Yii,我通过这种方式收到一份提交的表格: $resume->attributes=$\u POST['ResumeModel'] $profile->attributes=$\u POST['UserProfile'] 在此之前,两个CActiveRecord模型都已从相应的表中正确填充,它们具有正确的数据和所有数据。 两个模型的数据都显示在由表单修改的$\u POST上。 但是,对attributes属性的分配似乎只适用于$profile,而不适用于$resume。 如果我在赋值后检查它们的值,$p

我通过这种方式收到一份提交的表格:
$resume->attributes=$\u POST['ResumeModel']
$profile->attributes=$\u POST['UserProfile']

在此之前,两个CActiveRecord模型都已从相应的表中正确填充,它们具有正确的数据和所有数据。
两个模型的数据都显示在由表单修改的$\u POST上。
但是,对attributes属性的分配似乎只适用于$profile,而不适用于$resume。
如果我在赋值后检查它们的值,$profile不会从表单中获得编辑。 模型的定义中是否存在导致这种情况的因素?就我所见,这两个模型的实现方式相似
我不明白为什么会发生这种情况,有人知道吗?

谢谢

您是否仔细检查了$u 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',
  )
)
要确保表单为每个模型构建正确的$\u 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(); ?>

问题在于$resume模型上的某些字段没有任何验证规则,也没有声明为安全字段,因此无法安全地进行批量分配

参考:

谢谢!表单的格式正确。问题是模型上的一些字段没有任何验证规则,也没有在模型上声明为“安全”,所以这就是为什么没有分配质量。啊,当然。很高兴你弄明白了!也许你应该把自己的答案标记为正确答案。干杯