Yii2:在 AJAX 或 Pjax 中投票给 Post

Yii2 : Vote for a Post in AJAX or Pjax

我是 Yii2 框架的初学者。

我在论坛工作:

在 forum/posts 方法中,有关于该主题的 post 列表。

每个Post都有一个我想要在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(); ?>

在我的 Post 控制器中:

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 中看到我 return 的 Vote.php 视图,相同的代码 Pjax。

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

更新请求正常,但我有一些 problems/questions :

我不太明白 Pjax 是如何工作的,我也没有找到关于它的使用的好例子。

感谢您的回复:)

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

喜欢

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

了解更多信息。访问此 Demo