在传递给我的Yii项目中,有一个函数可以在单击按钮/链接Comment
时创建(或显示?)文本框。从那里,用户可以创建注释,这些注释将显示在一行中。
我想看看我是否可以创建一个编辑评论功能,所以我想我可以通过复制评论功能来实现这一点——它会显示一个文本框,用户可以在其中输入新的文本。它将编辑现有的评论,而不是添加新的评论。
但我遇到了一个障碍,因为很明显,view.php
使用了一个变量,而我一辈子都想不出如何在_comments.php
中使用这个变量——负责显示个人评论的文件afaik。
这是view.php
:的代码
</script>
<?php
$this->breadcrumbs=array('Forums'=>array('index'),$model->title,);
?>
<?php
if(Yii::app()->user->hasFlash('message')):
echo '<script>alert("'.Yii::app()->user->getFlash('message').'");</script>';
endif;
?>
<?php $starter = Persons::model()->findByAttributes(array('party_id'=>$model->party_id));?>
<div id="forum_main_box">
<div class="comment-icon-textbox">
<?php echo CHtml::ajaxLink('Comment',array('forum/callcommentform'),
array(
'update' => '#render_div'.$model->id,
'data'=>array('id'=>$model->id),
)); ?>
</div>
<?php endif; ?>
<div id="forum_comment_headerbox">
</div>
<div>
<?php
$this->widget('zii.widgets.CListView',
array(
'dataProvider'=>$dataProvider,
'itemView'=>'_comments',
'summaryText'=>'',
));
?>
<div id="render_div<?=$model->id?>" class="comment-form">
</div>
</div>
</div>
在这个代码中,下面是我提到的Comment
链接:
<?php echo CHtml::ajaxLink('Comment',array('forum/callcommentform'),
array(
'update' => '#render_div'.$model->id,
'data'=>array('id'=>$model->id),
)); ?>
<?php } ?>
这个块显示评论列表,以及当点击上面的Comment
时,文本框将弹出的空间(我认为是):
<?php
$this->widget('zii.widgets.CListView',
array(
'dataProvider'=>$dataProvider,
'itemView'=>'_comments',
'summaryText'=>'',
));
?>
<div id="render_div<?=$model->id?>" class="comment-form">
</div>
请注意,两者都使用了$model
。它最初以$model->title
的形式出现在代码中。
这里是_comments.php
的缩短版本,用于注释行和注释框。
<?php $comment = $data; ?>
<div class="other-member-comment-box">
<?php $person=Persons::model()->findByAttributes(array('party_id'=>$comment->party_id)); ?>
<?php
$country=Lookup_codes::model()->findByAttributes(array('id'=>$person->country));
$location = empty($country) ? '' : ' - '.$country->name;
// $model->title;
?>
<?php if (Yii::app()->user->id == $person->party_id || Yii::app()->partyroles->isAdmin()) {
?>
<p class="admin-commands">
<?php echo CHtml::link(CHtml::encode('Edit'),array('forum/editcomment','reply'=>$data->id,'topic'=>$data->content_id)); ?>
<?php echo CHtml::ajaxLink('EditTestComment',array('forum/callcommentform'),array('update' => '#render_div'.$model->id,'data'=>array('id'=>$model->content_id),)); ?>
<?php echo CHtml::link(CHtml::encode('Delete'),array('forum/delete','reply'=>$data->id,'topic'=>$data->content_id),array('confirm'=>'Are you sure you want to delete this item?')); ?>
<div id="render_div<?=$model->id?>" class="comment-form">
</div>
</p>
<?php } ?>
</div>
在<p class="admin-commands">
下,有一个EditTestComment
链路,它是来自view.php
的Comment
代码的直接拷贝。当然,这不起作用,因为这个:
2016/04/07 10:24:03[error][php]未定义变量:型号
$model
在view.php
中来自哪里?因为在_comments.php
中的任何地方放同一行($model->title)只会进一步破坏它。
编辑:这是控制器的CallComment部分:
public function actionCallCommentForm($id='')
{
$topic=Forum::model()->findByPk($id);
$this->renderPartial('_commentform', array(
'forum'=>$topic,
'model'=>new Comment,
//'view'=>array('view','id'=>$id),
'view'=>'view',
));
}
$model变量最初来自控制器。它是Comment类的一个实例,该类通过$this->render('view', array('model'=>$whatever))
传递给视图。这一行将在论坛/view.php文件中以$model的名称生成$whatever。现在,由于您处理的是局部视图,因此必须跟踪它,因为同一个$model变量可能会传递给另一个具有$this->renderPartial('_comment', array('whatever'=>$model))
的局部视图,并且现在它将在局部视图中以$whatever的形式访问。