在yii“帖子列表中的评论表单视图”中存在问题

时间:2011-07-26 15:12:18

标签: php 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>

它给出错误“Undefined variable:comment”

2 个答案:

答案 0 :(得分:1)

您需要定义$comment。您正在尝试将模型传递给表单。这通常是数据库表的模型。看起来您正在使用活动表单。这意味着您在Yii中使用Active Record模型。您应该有一个涵盖评论表的模型。如果您需要知道如何创建模型,可以了解如何使用Gii here

如果您已有评论模型,则只需定义模型即可。类似的东西:

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

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

答案 1 :(得分:0)

在不知道错误发生的确切位置的情况下,在我看来,最合乎逻辑的位置就在这个片段中:

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

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