Yii2:在AJAX或Pjax中投票

时间:2015-09-30 10:02:30

标签: php ajax yii2 yii2-advanced-app

我是Yii2框架中的佼佼者。

我在论坛上工作:

在forum / posts方法中,有一个关于该主题的帖子列表。

每个帖子在AJAX中都有我想要的分数。

在我看来posts.php,我打开一个Pjax块:

<?php Pjax::begin(); ?>
      Votes : <?= $val['score'] ?>
      <?= Html::a('+', ['/post/voteup','id'=>$val['id']]) ?>
      <?= Html::a('-', ['/post/votedown','id'=>$val['id']]) ?>
<?php Pjax::end(); ?>

在我的PostController中:

public function actionVoteup($id){
    //Update request
    $postRepo=new PostRepository();
    $postRepo->vote('plus', "id=$id");
    $post=$postRepo->getAll("id=$id");

    return $this->renderAjax('vote', ['id'=>$id, 'score'=>$post[0]['score']]);

}

你可以看到我在Ajax中返回Vote.php视图,代码为Pjax。

<?php Pjax::begin(); ?>
    Votes : <?= $score ?>
    <?= Html::a('+', ['/post/voteup','id'=>$id]) ?>
    <?= Html::a('-', ['/post/votedown','id'=>$id]) ?>
<?php Pjax::end(); ?>

更新请求没问题,但我有一些问题/疑问:

  • 例如:我想获得第二个分数,我点击,好的,我再次点击,刷新的部分视图是第一个帖子得分(但在数据库中,它是&#39; s好分数更新)。 我认为问题在于我在actionVoteup()中回归的观点。 我应该返回论坛/帖子还是发帖/投票?

  • 当我点击链接时,我的网址为:post/voteup;如何在原始网址论坛/帖子中返回?

我真的不明白Pjax是如何运作的,而且我没有找到关于它的使用的好例子。

感谢您的回复:)

1 个答案:

答案 0 :(得分:1)

您需要在'enablePushState' => false属性中添加Pjax

喜欢

<?php Pjax::begin(['enablePushState' => false]); ?>

了解更多信息。访问此Demo