Yii:从一个角度来看,我如何找出变量的来源?

时间:2016-04-07 08:29:50

标签: php yii

在传递给我的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

1 个答案:

答案 0 :(得分:0)

$ model变量最初来自您的控制器。它是Comment类的一个实例,它通过$this->render('view', array('model'=>$whatever))传递给视图。这行将在$ model的名称下的forum / view.php文件中生成$。现在,由于您正在处理部分视图,因此您必须跟踪它,因为有可能将相同的$ model变量传递给另一个具有$this->renderPartial('_comment', array('whatever'=>$model))的部分视图,现在这将在部分视图中以$ whatever访问。 / p>

相关问题