2012-01-19 8 views
0

私はYiiフレームワークの初心者です。マルチモデルフォームが必要なので、ちょうどthis linkに行ってこのようなことをしました。私は2つのテーブルを持っています。 well.IがGroupControllerへの変更は、このYii Multimodelフォームにエラーが発生しました

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, 
    )); 
    } 

と同様にグループ>>表示>> create.phpファイルを変更した後のようなファイルとして作られた今、私はテーブルとCRUDの両方のモデルを作った

Group 

ID 
name 

Member 

id 
group_id 
firstname 
lastname 

この

<?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 . この問題を解決する方法を教えてください。私はこれの後ろに1日失ってしまった。どんな助けや提案も非常に感知できるだろう。

答えて

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

早々に返事をくれてありがとう。私はあなたが言及したすべてのものを変更しましたが、同じ問題を示しています。未定義の変数:グループ – Jagdish

+0

あなたはエラーの詳細を... ... undefinedのように与えることができますか? –

+0

'Undefined variable:group'のようなエラーが表示され、ソースファイルのパスは/YII/WebApp/protected/views/member/create.php(14)のようになり、行(14)では<?phpエコー$ this-> renderPartial( '_ form'、array( 'group' => $ group、 'member' => $ member)); ?> – Jagdish

関連する問題