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 :
例:我要上第2分post,点一下,OK,再点一下,刷新的view部分是第1分Post 分数(但在数据库中,这是更新的好分数)。
我认为问题出在我 return 在我的 actionVoteup()
中的观点上。
我应该 return forum/posts 还是 post/vote ?
当我点击 link 时,我的 URL 是:post/voteup
;我怎么才能return在原来的URLforum/posts?
我不太明白 Pjax 是如何工作的,我也没有找到关于它的使用的好例子。
感谢您的回复:)
您需要在 Pjax
属性中添加 'enablePushState' => false
。
喜欢
<?php Pjax::begin(['enablePushState' => false]); ?>
了解更多信息。访问此 Demo
我是 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 :
例:我要上第2分post,点一下,OK,再点一下,刷新的view部分是第1分Post 分数(但在数据库中,这是更新的好分数)。 我认为问题出在我 return 在我的
actionVoteup()
中的观点上。 我应该 return forum/posts 还是 post/vote ?当我点击 link 时,我的 URL 是:
post/voteup
;我怎么才能return在原来的URLforum/posts?
我不太明白 Pjax 是如何工作的,我也没有找到关于它的使用的好例子。
感谢您的回复:)
您需要在 Pjax
属性中添加 'enablePushState' => false
。
喜欢
<?php Pjax::begin(['enablePushState' => false]); ?>
了解更多信息。访问此 Demo