understeam/yii2-ajax-dialog
最新稳定版本:v0.1.12
Composer 安装命令:
composer require understeam/yii2-ajax-dialog
包简介
Yii2 ajax dialog
README 文档
README
Этот виджет позволяет легко подключить ajax загрузку контента внутрь всплывающих окон Bootstrap 3 Dialog.
Установка
$ composer require understeam/yii2-ajax-dialog:~0.1 --prefer-dist
Controller и View
Первое, что требуется сделать - это view, который будет загружаться внутрь окна. Здесь ничего особенного.
Создается view файл, который рендерится из контроллера по запросу, например ['popup/show'].
<?php namespace app\controllers; use yii\web\Controller; class PopupController extends Controller { public function actionShow() { return $this->render('show'); } }
Внутри view необходимо обернуть отображаемую часть в виджет DialogContainer:
<?php $this->title = "Popup title!"; \understeam\dialog\DialogContainer::begin(); ?> <h1>Hello! This is popup</h1> <?php \understeam\dialog\DialogContainer::end(); ?>
Через $this->title можно задать заголовок всплывающего окна.
Так как для загрузки используется Pjax, встроенный в Yii2, все ассеты, подключаемые внутри этого view
будут подключены на страницу, в которой будет отображён попап. Это позволяет безопасно использовать,
например, ActiveForm с клиентской и ajax валидацией.
Подключение модального окна
Чтобы вставить модальное окно на страницу, можно использовать следующий код:
<?=\understeam\dialog\Dialog::widget([ 'url' => ['popup/show'], // URL содержимого 'open' => true, // Открыть окно при загрузке ]) ?>
Этот пример откроет модальное сразу при загрузке страницы. Чтобы этого избежать, можно назначить селектор или вызвать открытие окна из js кода.
<?=\understeam\dialog\Dialog::widget([ 'url' => ['popup/show'], // URL содержимого 'jsName' => 'myPopup', // Имя js переменной, в которую будет сохранён объект модального окна // Для вызова окна достаточно выполнить window.myPopup.open() 'selector' => 'a.showPopup', // Селектор, при клике на который будет совершено открытие окна ]) ?>
Кнопки
Кнопки в модальное окно добавляются через свойство buttons:
<?=\understeam\dialog\Dialog::widget([ 'url' => ['popup/show'], // URL содержимого 'buttons' => [ \understeam\dialog\CloseButton::className(), // Кнопка "закрыть" [ 'class' => \understeam\dialog\Button::className(), 'id' => 'btn-custom', 'label' => 'Custom', 'action' => 'function(){alert("custom button")}', 'cssClass' => ['btn-warning'], 'icon' => 'glyphicon glyphicon-ok', ], ] ]) ?>
Вы можете создавать свои кнопки, см. пример.
ActiveForm
Для отображение в окне ActiveForm с предопределёнными кнопками Submit и Close можно использовать
виджет ActiveFormDialog.
<?=\understeam\dialog\ActiveFormDialog::widget([ 'url' => ['popup/show'], 'jsName' => 'myPopup', ]) ?>
View при этом модифицировать не нужно
Передаваемые переменные
При отображении окна через JS имеется возможность передать в него динамические данные:
function openPopup(name, phone) { myPopup.setData('options', {name: name, phone: phone}); myPopup.open(); }
При этом подстановка данных произойдёт в поля ввода текста с data аттрибутом data-dialog-attr:
<input type="text" value="" name="name" data-dialog-attr="name" /> <input type="text" value="" name="phone" data-dialog-attr="phone" />
Или при выводе ActiveForm:
<?php /** * @var \yii\base\Model $model */ ?> <?php \understeam\dialog\DialogContainer::begin() ?> <?php $form = \yii\bootstrap\ActiveForm::begin() ?> <?= $form->field($model, 'name')->textInput([ 'data-dialog-attr' => 'name', ]); ?> <?= $form->field($model, 'phone')->textInput([ 'data-dialog-attr' => 'phone', ]); ?> <?php $form->end() ?> <?php \understeam\dialog\DialogContainer::end() ?>
TODO
- Валидация ActiveForm
- Больше настроек для BootstrapDialog
understeam/yii2-ajax-dialog 适用场景与选型建议
understeam/yii2-ajax-dialog 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9.35k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2016 年 07 月 31 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 understeam/yii2-ajax-dialog 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 understeam/yii2-ajax-dialog 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 9.35k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPLv3
- 更新时间: 2016-07-31