2012-01-19 2 views
0

Я новичок в структуре Yii. Мне нужна мультимодальная форма, поэтому я только что прошел через this link и сделал все, что и есть. У меня две таблицы: сначала группа, а другая - член.Получение ошибки в Yii Multimodel Form

Group 

ID 
name 

Member 

id 
group_id 
firstname 
lastname 

Теперь я сделал модели для обеих таблиц и CRUD как well.I сделанные изменения в GroupController файл как этот

public function actionCreate() 
    { 
    $group = new Group; 
    $member = new Member; 
    if(isset($_POST['Group'],$_POST['Member'])) { 
    //Populate input data to $group and $member 
     $group->attributes = $_POST['Group']; 
     $member->attributes = $_POST['Member']; 

    //Validate both $group and $member 
     $validate = $group->validate(); 
     $validate = $member->validate() && $valid; 

     if($valid){ 
     $group->save(false); 
     $member->save(false); 
     } 
    } 
    $this->render('create',array(
     'group'=> '$group', 
     'member'=> '$member', 
    )); 
    $model=new Group; 

    // Uncomment the following line if AJAX validation is needed 
    // $this->performAjaxValidation($model); 

    if(isset($_POST['Group'])) 
    { 
     $model->attributes=$_POST['Group']; 
     if($model->save()) 
     $this->redirect(array('view','id'=>$model->id)); 
    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 
    } 

и после изменения группы >> View >> create.php файл как это

<?php echo $this->renderPartial('_form', array('group'=>$group, 'member'=>$member)); ?> 

_form файл, как это

<div class="form"> 

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'group-form', 
    'enableAjaxValidation'=>false, 
)); ?> 

    <p class="note">Fields with <span class="required">*</span> are required.</p> 

    <?php echo $form->errorSummary($group,$member); ?> 

    <div class="row"> 
    <?php echo $form->labelEx($model,'name'); ?> 
    <?php echo $form->textField($model,'name'); ?> 
    <?php echo $form->error($model,'name'); ?> 
    </div> 

    <div class="row"> 
    <?php echo $form->labelEx($member,'firstname'); ?> 
    <?php echo $form->textField($member,'firstname',array('size'=>60,'maxlength'=>128)); ?> 
    <?php echo $form->error($member,'firstname'); ?> 
    </div> 

    <div class="row buttons"> 
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> 
    </div> 

<?php $this->endWidget(); ?> 

</div><!-- form --> 

, но в конце концов я получаю ошибку, как это Undefined variable: group . Так может кто-нибудь, пожалуйста, скажите мне, как решить эту проблему. Я потерял один день за этим. Так что любая помощь и предложения будут очень заметными.

ответ

2

Вы делаете несколько ошибок здесь ->

при вызове

$this->render('create',array(
     'model'=>$model, 
    )); 

вы не проходя $ группы или $ модели членов, которые вы создали в группе создать контроллер. Измените его -

$this->render('create',array(
     'group'=>$group, 
     'member'=>$member, 
    )); 

и во-вторых, не существует переменная с именем $ действительным ... изменить эту часть

$validate = $member->validate() && $valid; 

    if($valid){ 

в

$validate = $member->validate() && $validate; 

     if($validate){ 

теперь все должно работать нормально

+0

Спасибо за ваш быстрый ответ. Я изменил все то, что вы упоминали, но он показывает ту же проблему. Определенная переменная: group – Jagdish

+0

вы можете дать более подробную информацию об ошибке ... например, неопределенный где? –

+0

показывает ошибку, как «Неопределенная переменная: группа», и путь к исходному файлу аналогичен этому /YII/WebApp/protected/views/member/create.php(14), а в строке (14) он похож на renderPartial ('_ form', array ('group' => $ group, 'member' => $ member)); ?> – Jagdish

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