Використання 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

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.