2016-04-07 7 views
0

私に渡されたYiiプロジェクトでは、ボタン/リンクCommentがクリックされたときにテキストボックスを作成(または表示)する機能があります。そこから、ユーザーはコメントを作成することができます。コメントは行内に表示されます。Yii:ビューから、どのように変数がどこから来たのか分かりましたか?

コメントの編集機能を作成できるかどうかを確認しようとしていますので、コメント機能をコピーすることでこの問題に取り組むことができました。テキストボックスが表示され、ユーザーはそこに新しいテキストを入力できます。新しいコメントを追加する代わりに、既存のコメントを編集します。 私は人生のためにできなかった変数を利用しているように、_comments.php - 個々のコメントを表示するファイルafaik。_comments.phpを使用しています。

ここ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の短縮バージョンがあります。 <p class="admin-commands">の下

<?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> 

view.phpからCommentコードのまっすぐコピーですEditTestCommentリンクがあります。これは、このため、当然のことながら、動作しません:

2016年4月7日10時24分03秒[エラー] [PHP]未定義の変数:モデル

どこでしょ$modelが来ます〜からview.php_comments.phpのどこにでも同じ行($ model-> title)を置くだけで、それはさらに壊れます。

EDIT:

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', 
    )); 
} 

答えて

0

$モデル変数は、最初にコントローラから来ている:ここでは、コントローラのCallComment部分です。これは、$this->render('view', array('model'=>$whatever))経由でビューに渡されるCommentクラスのインスタンスです。この行は、$ modelの名前でforum/view.phpファイルにある$を利用可能にします。今では部分的なビューを扱っているので、同じ$モデル変数が$this->renderPartial('_comment', array('whatever'=>$model))で別の部分ビューに渡される可能性があるので、これを追跡する必要があります。これは部分ビューで$ whateverとしてアクセス可能になります。

+0

私は 'actionCallCommentForm'を追加しました。これは、ユーザーがCommentをクリックしたときに呼び出されるものです。そこに渡されているモデルがありますが、エラーは.phpファイルで同じままです。 –

+0

msgが正しく表示されていない場合は、msgが表示されます。あなたはモデルをvar_dumpして得たものを見ることができます。前にビューにダンプするものがない場合。それをコントローラに戻して追跡します。 – peaceman

+0

'actionView'からログ/ダンプしますか?私も 'renderInternal'を試しましたが、うまくいきませんでした。 –

関連する問題