2010-07-19 43 views
2

我收到提交的表单这样:
$resume->attributes = $_POST['ResumeModel'];
$profile->attributes = $_POST['UserProfile'];
获取表单数据Yii中到的CActiveRecord模型适用于一个模型而不是另一

两者的CActiveRecord模型,在此之前正确填充在相应的表格,他们拥有正确的数据和全部。
这两个模型的数据都存在于$ _POST中,并由表单修改。
但它似乎属性属性的分配只适用于$ profile而不是$ resume。
如果在分配后检查它们的值,$ profile不会从表单中获取编辑。 模型的定义中是否有可以导致这种情况的东西?据我所知,这两种模式都是类似的实施
我不明白为什么会发生这种情况,有没有人有线索?
谢谢!

回答

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阵列每个模型,请确保您传递两个$简历和$剖面模型到表单视图是这样的:

<?php 
$resume=new ResumeModel; 
$profile=new UserProfile; 
$this->render('yourFormView', array('resume'=>$resume,'profile'=>$profile)); 
?> 

然后,在“yourFormView”,确保您创建的FO每个模型适当RM领域,像这样:

<?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(); ?> 
+0

谢谢!该表单已正确形成。问题在于模型上的某些字段没有任何验证规则,也没有在模型上声明为“安全”,所以这就是为什么没有被批量分配。 – Petruza 2010-07-21 11:43:18

+0

啊,当然。很高兴你知道了!或许,你应该将自己的答案标记为正确答案。干杯 – thaddeusmt 2010-07-22 16:39:59

相关问题