2013-09-22 4 views
0

У меня есть эта странная проблема, когда значения, похоже, отправляются на форму submit, но все же там контроллер, похоже, не находит его. Я сохраняю три модели с одной формой. Оба отношения к основной модели - 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), чтобы увидеть, что именно ваш получать

Смежные вопросы