私に渡された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',
));
}
私は 'actionCallCommentForm'を追加しました。これは、ユーザーがCommentをクリックしたときに呼び出されるものです。そこに渡されているモデルがありますが、エラーは.phpファイルで同じままです。 –
msgが正しく表示されていない場合は、msgが表示されます。あなたはモデルをvar_dumpして得たものを見ることができます。前にビューにダンプするものがない場合。それをコントローラに戻して追跡します。 – peaceman
'actionView'からログ/ダンプしますか?私も 'renderInternal'を試しましたが、うまくいきませんでした。 –