0

我有一个包含帖子和评论的页面。我有一个评论按钮,可以打开一个模式窗口并允许发表评论。我可以得到评论保存没问题。我可以让页面更新或模式关闭,但我不能让两者同时发生。我能找到的每个例子都把这个搞砸了 4 个小时。我很感激任何帮助。

这是我的控制器。

public function actionIndex(){  
        $this->layout='account2';
        $feedItems=NewsfeedItem::model()->getFeed('account');
        $player=Players::model()->findByPK(Yii::app()->user->id);
        $this->render('index', array('player'=>$player, 'feedItems'=>$feedItems));
    }

public function actionAddcomment(){
    $comment=new NewsfeedComment;
    $comment->text=$_POST['comment'];
    $comment->players_id=Yii::app()->user->id;
    $comment->newsfeed_item_id=$_POST['newsfeeditem'];
    $comment->datetime=date('Y-m-d h:i:s');
    $comment->save();
    $feedItems=NewsfeedItem::model()->getFeed('account');              
    $this->renderPartial('_newsfeed', array('feedItems'=>$feedItems), false, true);     
}

这些是我的视图文件

指数

Welcome, <?php echo $player->firstname;?>
<br />
<br />
<div id='newsfeed'>
    <?php $this->renderPartial('_newsfeed', array('feedItems'=>$feedItems)); ?>
</div>

_newsfeed

<?php 
foreach($feedItems as $item){
    $onclick='$(mydialog' . $item->id . ').dialog("open"); return false;';
    echo "<h6>" . $item->getAuthor() . "</h6><br />";
    echo '"' . $item->text . '" - ';
    echo CHtml::link('Comment', '#', array(
       'onclick'=>$onclick,
    ));
    echo '<br />';
    $comments=array_slice($item->comments, -5);
    foreach($comments as $comment){

        echo '<h6>';
        echo $comment->text;
        echo '</h6><br />';
    }
    $this->beginWidget('zii.widgets.jui.CJuiDialog',array(
        'id'=>"mydialog" . $item->id,
        // additional javascript options for the dialog plugin
        'options'=>array(
            'title'=>'Comment',
            'autoOpen'=>false,
        ),
    ));

        ?>
        <form method='POST' action='/account/addcomment'>
            <textarea name='comment'></textarea>
            <input type='hidden' name='newsfeeditem' value='<?php echo $item->id; ?>'>
            <?php $closeclick='js:function(){$(mydialog' . $item->id . ').dialog("close");}'; ?>
            <div class="row buttons">
                <?php echo CHtml::ajaxSubmitButton('Add Comment', '/account/addcomment', array(
                    'update'='#newsfeed', //REMOVING THIS LINE ALLOWS MODAL TO CLOSE
                    'success'=>'js:'
                        .'function(){'
                          .'$("#mydialog' . $item->id . '").dialog("close");'
                        .'}',
                )); ?>
            </div>
        </form>

    <?php
    $this->endWidget('zii.widgets.jui.CJuiDialog');


    echo "<br />";
}
?>
4

1 回答 1

0

在您的 renderPartial 中定义另外 2 个参数:

$this->renderPartial('_newsfeed', array('feedItems'=>$feedItems),false,true);
于 2013-06-11T05:15:31.133 回答