2011-07-26 3 views
0

投稿フォームにユーザーがコメントを入力できるコメントフォームを持ってきてみました。 私は上記の問題のために書くよ私のコード...yiiさん「投稿一覧のコメントフォームビュー」に問題があります

<h5>Add your Comment</h5> 

    <?php if(Yii::app()->user->hasFlash('commentSubmitted')): ?> 
     <div class="flash-success"> 
      <?php echo Yii::app()->user->getFlash('commentSubmitted'); ?> 
     </div> 
    <?php else: ?> 

     <?php $this->renderPartial('/comment/_form',array(
      'model'=>$comment 
     )); ?> 

    <?php endif; ?> 

"_formが含まれている....." それはエラーを与える

<div class="form"> 

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

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

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

    <div class="row"> 
    <?php echo $form->labelEx($model,'content'); ?> 
    <?php echo $form->textArea($model,'content',array('rows'=>6, 'cols'=>50)); ?> 
    <?php echo $form->error($model,'content'); ?> 
    </div> 
    <div class="row"> 
    <?php echo $form->labelEx($model,'author'); ?> 
    <?php echo $form->textField($model,'author',array('size'=>60,'maxlength'=>128)); ?> 
    <?php echo $form->error($model,'author'); ?> 
    </div> 

"未定義の変数:コメント"

+0

エラーメッセージには、エラーが発生したファイルとエラーが発生した行も含まれています。その情報は問題を解決するのに役立ちます(参照されたファイル/行だけを見れば問題の原因を見つけることさえできます)。 – Arjan

答えて

0

エラーが発生した場所を正確に知らなくても、最も論理的な場所は、このスニペットであるように私には思える:

<?php $this->renderPartial('/comment/_form',array(
    'model'=>$comment 
)); ?> 

解決策はおそらく$comment'Comment'(または類似のもの、私は本当にYiiに精通していない)に置き換えることになります。

1

$commentを定義する必要があります。フォームにモデルを渡そうとしています。これは、通常、データベーステーブルのモデルです。アクティブなフォームを使用しているようです。つまり、Yiiでアクティブレコードモデルを使用しています。コメントテーブルをカバーするモデルが必要です。モデルの作成方法を知る必要がある場合は、Gii hereの使い方を知ることができます。

すでにコメントモデルがある場合は、モデルを定義するだけで済みます。次のようなものがあります。

$comment = new Comment(); 
$this->renderPartial('/comment/_form',array('model'=>$comment)); 

これは時には別のビューを呼び出すビューです。元のビューを呼び出すコントローラーで$comment変数を定義できます。最初のビューと2番目のビューにコメント変数を渡すだけで済みます。