我试着把评论表单放在帖子视图列表中,用户可以在那里发表评论。我的代码,我写的上面的问题…
<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)。