我尝试将评论表单放在帖子视图列表中,用户可以在其中发表评论。 我为上述问题编写的代码......
<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”
答案 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并不熟悉)。