@AlexWeb6667
Web-дизайнер с опытом FullStack разработки

Как правильно реализовать AJAX подгрузку контента?

День добрый всем. Кто знает как работать с виджетом Yii2-scroll-pager (kop.github.io/yii2-scroll-pager/)? Хочу сделать передвижение по категории товара, по товарам и то то в вели в поиск полностью на AJAX без перезагрузки странички. Все вроде сделал но вот в чем загвоздка. Главная страничка выводит все как надо через listLiew:

передаю в контроллере

$dataProvider = new ActiveDataProvider([
'query' => Product::find()->orderBy('id DESC'),
'pagination' => [
'pageSize' => 20,
],

]);

return $this->render('index', ['listDataProvider' => $dataProvider,'categorys' => $categorys]);

в виде:

<?=
ListView::widget([
'dataProvider' => $listDataProvider, //Список товаров
'itemOptions' => [
'tag' => 'li',
'class' => 'item product_ajx product_card wow fadeIn',

],

'options' => [ //Стили вьюшки
'tag' => 'ul',
'id' => 'product_box w0',
'class' => 'list-view'
],

'itemView' => '_products', //Подгружаемы вид

'pager' => [ //Pager
'class' => ScrollPager::className(),

'triggerOffset'=>5,

'triggerText' => "Показать еще", //Текст на кнопке подгрузки
'triggerTemplate' => '', //Вид кнопки подгрузки

'noneLeftText' => "Больше записей нет", //Текст на последней кнопке
'noneLeftTemplate' => '',

'spinnerTemplate' => '%7Bsrc%7D',
],

'layout' => "{items}\n{pager}\n{summary}", //Позиция секций шаблона

'summary' => 'Всего товаров {totalCount}', //Всего товаров
'summaryOptions' => [ //Стили summary
'tag' => 'span',
'class' => 'my-summary'
],

'emptyText' => 'empty.svgСписок пуст', //Список пуст
'emptyTextOptions' => [ //Стили
'tag' => 'h1',
'class' => 'empty_b',
],

]);
?>

И все работает.

Но только начинаю подгружать AJAXom

//АJAX запросс
if (Yii::$app->request->isAjax) {

//Товары категории
if (Yii::$app->request->post('id')) {
$id = Yii::$app->request->post('id');
$dataProvider = new ActiveDataProvider([
'query' => Product::find()->where(['category_id' => $id])->orderBy('id DESC'),
'pagination' => [
'pageSize' => 20,
],

]);

$this->layout = false;
return $this->render('product', ['listDataProvider' => $dataProvider]);

}
}

он выводит нужные параметры. Но кнопка показать еще по прежнему функционирует для тех данных которые отображались до AJAX перехода, хотя я загрузил абсолютно другой вид. Появляется кнопка показать еще, но при клике на нее подгружается все со старой модели( а не той которую я загрузил AJAXom)
не подскажите в чем беда?
  • Вопрос задан
  • 860 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
и то то в вели

Итотоввели - это какой-то курорт Европе. Что Вы хотели сказать этим?

Все вроде сделал но вот в чем загвоздка. Главная страничка выводит все как надо

А надо, что бы главная страница выводила чушь?

не подскажите в чем беда?

Подскажу, надо четко формулировать вопрос. Вы же плохо сформулировали и не вопрос, а "вот мой код, тут что-то не работает". О какой кнопке Вы говорите не понятно, не понятно с чего она должна меняться, в коде этого нет. Я честно не хотел "тролить", сорри, и зашел, что бы помочь, но тут нет возможности помочь совсем. Как бы мне того не хотелось. Попробуйте переписать вопрос заново. Только так, что бы он был краткий, а потом уже можно добавить "поясняловку".

П.С.: У Вас в подписи написано "fullstOck разработчик с углублением"
f5b8a191618a4b09939f4a95c0a8098f.PNG
- это дословно можно перевести, как "полный запас с углублением", вероятно стоит изменить на "fullstAck" и не показывать углубление ))) Я думаю "Web-дизайнер с опытом fullstack разработки" - более понятно и менее смешно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы