Yii2: основы работы с PJAX
PJAX это виджет в Yii2 позволяющий обновлять вам только заданный участок страницы, без перезагрузки всего содержимого. Например вы можете сделать пагинацию в вашем блоге на PJAX.
Вы можете обернуть весь контейнер со списком материалов и при открытии страниц, они будут подгружатся в этот же контейнер практически молниеносно, без перезагрузки всей страницы. Вы даже можете обернуть весь layot сайта в PJAX и тогда по переходу по ссылкам страницы будут открываться практически молниеносно.
Для того, что бы в Yii Framework выполнить какую либо часть кода, вам необходимо подключить класс:
use yii\widgets\Pjax;
и обернуть необходимый код в соответствующий виджет:
<?php Pjax::begin(); ?> // ваш код <?php Pjax::end(); ?>
Эта заметка нужнается в более расширенной теоретической базе. Сегодня же я поделюсь моим базовым примером, как через PJAX выполнить экшен контроллера.
Вызов экшена в контроллере через PJAX
В форме:
<div class="col-sm-12 col-md-6"> <?php Pjax::begin(); ?> <?= Html::a("Новая случайная строка", ['site/multiple'], ['class' => 'btn btn-lg btn-primary']) ?> <h3><?= $randomString ?></h3> <?php Pjax::end(); ?> </div> <div class="col-sm-12 col-md-6"> <?php Pjax::begin(); ?> <?= Html::a("Новый случайный ключ", ['site/multiple'], ['class' => 'btn btn-lg btn-primary']) ?> <h3><?= $randomKey ?><h3> <?php Pjax::end(); ?> </div>
В контроллере:
public function actionMultiple() { $security = new Security(); $randomString = $security->generateRandomString(); $randomKey = $security->generateRandomKey(); return $this->render('multiple', [ 'randomString' => $randomString, 'randomKey' => $randomKey, ]); }
Вариант когда по клику можно обновить Pjax
<?php $this->registerJs( '$("document").ready(function(){ $(".myButtom").click(function() { $.pjax.reload({container:"#payments"}); //Reload GridView }); });' ); ?> <?php yii\widgets\Pjax::begin(['id' => 'new_payment']) ?> // Some code <?php yii\widgets\Pjax::end(); ?>