Использование Pjax в Yii2 (краткий обзор)

Разрабатываю проект на yii2, попутно изучая фреймворк, и не смог не поделиться одним из замечательных инструментов, который он представляет. Пост будет полезен тем, кто до этого с Pjax не работал. Опытным разработчикам, которые уделят посту время, буду благодарен за указание на неточности и дополнения, так пост станет полезнее и информативнее.

Для справки:
Pjax — это jquery плагин, который использует pushState и ajax и предоставляет возможность грузить страницу не полностью при переходе по ссылкам, а частично, но с соответствующим заголовком страницы и возможностью возврата назад

Использование Pjax с GridView


Хорошо об этом написано здесь.

Если в кратце, то для того, чтобы pjax заработал, надо виджет GridView обернуть следующим образом:

<?php \yii\widgets\Pjax::begin(); ?>
<?= GridView::widget([
// ... configuration here
]);
<?php \yii\widgets\Pjax::end(); ?>


Если же вы не хотите, чтобы все ссылки осуществляли pjax запрос, то следует исключаемым ссылкам добавить атрибут data-pjax=0. Например так:

<?= \yii\helpers\Html::a(Yii::t('app', 'подробнее...'), ['car/view', 'id' => $car->id], ['data-pjax'=>0]) ?>


Так же у виджета pjax есть свойство:

public $linkSelector;


Его можно использовать для выборки ссылок, которые будут обрабатываться с использованием pjax.

pjax на сабмит формы

Если вы хотите повесить pjax на сабмит формы, то вам следует добавить ей атрибут data-pjax=1, так как по умолчанию код, формируемый виджетом, выглядит следующим образом:

jQuery(document).on('submit', "#w2 form[data-pjax]", function (event) {jQuery.pjax.submit(event, '#w2', {"push":true,"replace":false,"timeout":1000,"scrollTo":false});});


Однако, вы так же можете его изменить, используя свойство:

public $formSelector;


Где почитать подробнее

Ссылка на pjax виджет github.com/yiisoft/yii2-framework/blob/master/widgets/Pjax.php
Ссылка на pjax плагин github.com/yiisoft/jquery-pjax
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 5

    +6
    Давно хочу написать пост на хабр с просьбой ко всем авторам: если пишите статью о какой-то не сильно популярной технологии, указывайте в самом начале, вкратце, что это такое вообще? Для рекавери режима данная статья не кажется стоящей, поэтому буду хоть в комментариях оставлять ответ:

    Pjax is a jQuery plugin that uses ajax and pushState to deliver a fast browsing experience with real permalinks, page titles, and a working back button.
      0
      Смотрю автор внес правки в статью, теперь там описана суть pjax
      +1
      мало
        +1
        очень мало
        на форуме yiiframework.ru/forum/viewforum.php?f=23 уже куда больше инфы про pjax, ajax, submit…
          0
          то вам следует добавить ей атрибут data-pjax=1

          Можно просто data-pjax

          Only users with full accounts can post comments. Log in, please.