2013-09-22 65 views
0

我有這個奇怪的問題,其中的值似乎得到張貼表單提交但仍然有控制器似乎找不到它。我用一種形式保存了三個模型。與主模型的關係都是HAS_MANY。這是控制器。Yii模型沒有發佈

$model=$this->loadModel($id); 
$modelunitgroup = $model->userUnitgroups; 
$modelunit = $model->userUnits; 
    if(isset($_POST['User'], $_POST['Userunitgroup'], $_POST['Userunit'])) 
     { 
      $model->attributes=$_POST['User']; 
      $modelunit->attributes=$_POST['Userunitgroup']; 
      $modelunitgroup->attributes=$_POST['Userunit']; 
      $valid=$model->validate(); 
      if($valid) 
       { 
        if($model->save(false)) 
        { 
         $modelunitgroup->user_id = $model->id; 
         $modelunit->user_id = $model->id; 
         if ($modelunitgroup->save() && $modelunit->save()) 
          { 
            Yii::app()->user->setFlash('success', "User updated!"); 
            $this->redirect(array('view','id'=>$model->id)); 
          } 
        } 
       } 
     } 
    $this->render('update',array(
    'model'=>$model, 
    'modelunitgroup'=>$modelunitgroup, 
    'modelunit'=>$modelunit, 
    )); 

這裏的關係

'userUnitgroups' => array(self::HAS_MANY, 'Userunitgroup', 'user_id'), 
'userUnits' => array(self::HAS_MANY, 'Userunit', 'user_id'), 

和表單視圖

<?php echo $form->errorSummary($model); ?> 

     <?php echo $form->dropDownListRow($model, 'title', $model->getUtitle(),array('prompt' => 'Select ...'));?> 
     <?php echo $form->textFieldRow($model,'firstname',array('class'=>'span5','maxlength'=>60)); ?> 
     <?php echo $form->textFieldRow($model,'lastname',array('class'=>'span5','maxlength'=>60)); ?> 
     <?php echo $form->textFieldRow($model,'mobile',array('class'=>'span5')); ?> 
     <?php echo $form->textFieldRow($model,'email',array('class'=>'span5','maxlength'=>160)); ?> 
     <?php echo $form->passwordFieldRow($model,'password',array('class'=>'span5','maxlength'=>32)); ?> 
     <?php 
      foreach ($modelunitgroup as $mgroup) { 
      echo $form->dropDownListRow($mgroup, 
      'unitgroup', 
      $model->getUnitgroups(), 
      array(
      'ajax' => array(
      'type'=>'POST', 
      'url'=>CController::createUrl('user/getunit'), 
      'update'=>'#Userunit_unit', 
      ))); 
      } 
      foreach ($modelunit as $munit) { 
      echo $form->dropDownListRow($munit, 
       'unit', 
       array() 
       ); 
      } 
     ?> 

我不斷收到錯誤 「試圖向非對象的屬性」。看起來'Userunitgroup'和'Userunit'從不張貼,這很奇怪,因爲我在Firefox中檢查了標題,並且所有值都正確發佈。任何可能導致這種情況以及如何解決這個問題的幫助?

回答

1

$modelUnitGroup$modelunit是數組,但您正在分配屬性,如它們是單獨的模型(對象)。有關如何執行批量插入/更新consult the manual的更多信息。

0

我覺得你在你的情況你的模型的規則有問題,在您的模型類:

public function rules() { 
    array('title ,name, country, ..., password', 'safe', 'on'=>'thisCustomeScenario'), 
    ... 
} 

,並嘗試的var_dump($ _ POST),看看究竟你獲得