在传递给我的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
链接,它是来自Comment
的{{1}}代码的直接副本。当然,这不起作用,因为:
2016/04/07 10:24:03 [错误] [php]未定义的变量:model
view.php
来自哪里$model
?因为在view.php
中的任何位置放置相同的行($ model-&gt; title)只会进一步打破它。
编辑:这是控制器的CallComment部分:
_comments.php
答案 0 :(得分:0)
$ model变量最初来自您的控制器。它是Comment类的一个实例,它通过$this->render('view', array('model'=>$whatever))
传递给视图。这行将在$ model的名称下的forum / view.php文件中生成$。现在,由于您正在处理部分视图,因此您必须跟踪它,因为有可能将相同的$ model变量传递给另一个具有$this->renderPartial('_comment', array('whatever'=>$model))
的部分视图,现在这将在部分视图中以$ whatever访问。 / p>