execut / yii2-base
My base classes for yii2
Installs: 146 887
Dependents: 18
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 4
Open Issues: 0
Type:yii2-extension
Requires
- yiisoft/yii2: >=2.0.13
- yiisoft/yii2-jui: @dev
- dev-master
- 1.14.2
- 1.14.1
- 1.14.0
- 1.13.4
- 1.13.3
- 1.13.2
- 1.13.1
- 1.13.0
- 1.12.0
- 1.11.0
- 1.10.4
- 1.10.3
- 1.10.2
- 1.10.1
- 1.10.0
- 1.9.1
- 1.9.0
- 1.8.1
- 1.8.0
- 1.7.0
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.0
- 1.0.3.x-dev
- 1.0.2.x-dev
- dev-mvc-test-support
This package is auto-updated.
Last update: 2024-11-18 15:36:04 UTC
README
My base classes for yii2
Bootstrap system
execut\yii\Bootstrap
Этот класс необходим для возможности иерархического запуска компонентов для различных модулей. Допустим есть модуль users, для своей работы он требует навигацию execut/yii2-navigation и модуль CRUD execut/yii2-crud. Их необходимо запустить до запуска основного модуля users. При этом самим этим компонентам нужно запускать ещё комоненты для своей работы. Например, execut/yii2-crud требует пакет execut/yii2-actions. С помощью execut\yii\Bootstrap компоненты рекурсивно сами подцепят себе всё необходимое и не нужно об этом заботиться. Нам-же нужно запустить модуль users и указать от запуска каких компонентов он зависит. Для этого необходимо реализовать потомка класса \execut\yii\Bootstrap, объявив в нём все зависимости модуля users и саму настройку модуля users:
<?php namespace execut\users; class Bootstrap extends \execut\yii\Bootstrap { public function getDefaultDepends() { return [ 'bootstrap' => [ 'yii2-navigation' => [ 'class' => \execut\navigation\Bootstrap::class, ], 'yii2-crud' => [ 'class' => \execut\crud\Bootstrap::class, ], ], 'modules' => [ 'users' => [ 'class' => Module::class, ], ], ]; } public function bootstrap($app) { parent::bootstrap($app); // Здесь можно задать код для бутстрапа модуля. Родителя вызвать обязательно } }
После этого добавляем в конфигурацию приложения запуск модуля users. Прелесть бутрапа в том, что сам модуль как и все необходимые компоненты указывать в конфигурации приложения не нужно, поскольку это всё и так объявлено в бутстрапе:
... 'bootstrap' => [ 'users' => [ 'class' => \execut\users\Bootsrap::class, ], ], ...
Если ещё необходимо задать модулю параметры окружения приложения, то указываем их через директиву depends в конфиге:
... 'bootstrap' => [ 'users' => [ 'class' => \execut\users\Bootsrap::class, 'depends' => [ 'modules' => [ 'users' => [ 'defaultRoute' => '/users' ], ], ], ], ], ...
Widgets system
execut\yii\jui\Widget
This class provides the ability to simplify create jquery widgets with assets files if you want. To create a widget, you must create files in follow structure:
- CustomWidget.php
- CustomWidgetAsset.php
- assets\CustomWidget.js
- assets\CustomWidget.css
- CustomWidget.php
Create class for you widget:
class CustomWidget extends \execut\yii\jui\Widget { public function run() { /** * If you want append assets files and create javascript widget instance */ $this->registerWidget(); /** * Or if you want only append assets files */ $this->_registerBundle(); /** * renderContainer - helper method for wrapping widget in div container with defined in widget options */ $result = $this->renderContainer($this->renderWidget()); return $result; } protected function renderWidget() { /** * Here generate widget out $result */ return $result; } }
- CustomWidgetAsset.php
Define asset bundle class in same folder and name with postfix Asset
class CustomWidgetAsset extends \execut\yii\web\AssetBundle { }
- assets\CustomWidget.js
If you want javascript functional, create jquery widget file assets\CustomWidget.js:
(function () { $.widget("customNamespace.CustomWidget", { _create: function () { var t = this; t._initElements(); t._initEvents(); }, _initElements: function () { var t = this, el = t.element, opts = t.options; }, _initEvents: function () { var t = this, el = t.element, opts = t.options; } }); }());
- assets\CustomWidget.css
If you want css styles, create file assets\CustomWidget.css:
.custom-widget {
}