Я хотел сделать обычноое ajax пагинацию, где нажимаешь на кнопку показать еще и показывается следующие данные снизу, аналог примерно вот так сделать
https://ruseller.com/lessons/les2017/demo/index.html
Только первое я так и не понял как это реализовать и где мне это в ajax брать данные, то есть заново делать запрос в бд или из имеющих данных как-то фиксировать?
Моя реализация
вьюшка
<div class="comment-order">
<?php foreach ($comments as $com){
switch ($com->user_id){
case Yii::$app->user->id;
$user = 'Я';
break;
case (User::USER_DISAYNER);
$user = 'Дизайнер';
break;
case (User::USER_MASTER):
$user = 'Мастер';
break;
}
echo '
<div style="display: block;">
<div class="userCommit">'.$user.':</div>
<div class="comment">'.$com->comment.'</div>
<div class="dateCommit">'.date('d.m H:i', strtotime($com->date)).'</div>
</div>';
} ?>
<div class="pagePagination" data-id="<?= $model->order_id ?>">Показать еще</div>
</div>
Контроллере в этой страница
$comments = Comment::find()->where(['id_zakaz' => $model->id_zakaz]);
$pages = new \yii\data\Pagination((['totalCount' => $comments->count(), 'pageSize' => 3]));
$comments = $comments->offset($pages->offset)
->limit($pages->limit)
->all();
ajax запрос
$('body').on('click', '.pagePagination', function () {
let id = $(this).data('id');
$.get(`${window.location.origin}/comment/comment-zakaz?id=${id}`)
.done(res => console.log(res))
.fail(err => console.error(err.responseText));
});
И тот самый контроллер
public function actionCommentZakaz($id)
{
$comments = Comment::find()->select(['id_user', 'date', 'comment'])->where(['id_zakaz' => $id]);
$pages = new Pagination(['totalCount' => $comments->count(), 'pageSize' => 6]);
$comments = $comments->offset($pages->offset)
->limit($pages->limit)
->all();
return json_encode($comments);
}
Только немного не понятно как это делается или есть может готовое решение и я не тка ищу в гугле?