在yii "存在问题;在帖子列表中查看评论表单


there is issue in yii " comment form view in post list"

我试着把评论表单放在帖子视图列表中,用户可以在那里发表评论。我的代码,我写的上面的问题…

<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; ?>

"The _form contains ....."

<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>

给出错误"Undefined variable: comment "

您需要定义$comment。您正在尝试将模型传递给表单。这通常是一个数据库表的模型。看起来你在使用主动形式。这意味着您正在使用Yii中的活动记录模型。您应该有一个覆盖注释表的模型。如果你需要知道如何创建一个模型,你可以在这里找到如何使用Gii。

如果你已经有了一个注释模型,那么你只需要定义模型。比如:

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

看起来这个视图有时会调用另一个视图。您可以在调用原始视图的控制器中定义$comment变量。您只需要将注释变量传递给原始视图和第二个视图。

在不知道错误发生的确切位置的情况下,我认为最符合逻辑的位置是在这个代码片段中:

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

解决方案可能是用'Comment'代替$comment(或类似的东西,我不太熟悉Yii)。