nullref / yii2-core
Installs: 4 597
Dependents: 13
Suggesters: 0
Security: 0
Stars: 4
Watchers: 6
Forks: 0
Open Issues: 8
Type:yii2-extension
Requires
- php: >=5.4.0
- symfony/filesystem: ^3.1
- symfony/finder: ^3.1
- voskobovich/yii2-linker-behavior: dev-master
- yiisoft/yii2: >=2.0.6
Requires (Dev)
- yiisoft/yii2-gii: ^2.0@dev
This package is auto-updated.
Last update: 2024-10-29 04:14:43 UTC
README
WIP
Module for administration
Installation
The preferred way to install this extension to use composer.
Either run
php composer.phar require --prefer-dist nullref/yii2-core "*"
or add
"nullref/yii2-core": "*"
to the require section of your composer.json
file.
Config structure
This module designed to work with special config file.
In case when you use module/install
command it creates installed_modules.php
file in condif folder if it doesn't exist.
This file will contain config array of installed modules (obviously).
You need to merge this config with your applications config (web, console, etc).
I recommend using the structure that described below, it used at our application template.
- installed_modules.php
<?php return [];
- modules.php
<?php $config = require(__DIR__ . '/installed_modules.php'); return array_merge($config, []);
- web.php
<?php $modules = require(__DIR__ . '/modules.php'); $config = [ //... 'modules' => $modules, //... ]; return $config;
When you are using this config structure you are able to override installed modules cofiguration in modules.php
.
Also, modules.php
file could be included to console.php
config file.
App-specific configs could be added directly in corresponding config file.
Modules system
This module provides basic tools for creating system of modules.
Available modules:
For full integration, you have to run console command:
php yii module/install <module-name>
Content
Core module for fast web development based on Yii2. This package contains:
-
components:
- EntityManager - component for simple managing of entities (models)
-
interfaces:
- IAdminModule - interface for modules which can be used by nullref\yii2-admin
- IRoleContainer - interface which provide roles for RBAC
- IEntityManager - interface EntityManager
- IEntityManageble - interface for classes which contain EntityManager
Translation overriding
Core package contain PhpMessageSource class that allows to merge default module's and application's messages. Example for admin module
[ /** App config **/ 'components' => [ 'i18n' => [ 'translations' => [ '*' => ['class' => 'yii\i18n\PhpMessageSource'], 'admin' => ['class' => 'nullref\core\components\i18n\PhpMessageSource'], ], ], ] ]
In this case messages from category admin
from application directory will be merged with default messages from module.
Modules migrations
Module contains MigrateController
controller which allows work with migrations of modules.
e.g.:
php yii core/module --moduleId=admin
-- apply migrations for module with id admin
Keep in mind: Migrations should have namespaces
Also, is possible work with migrations off all modules:
php yii core/module
-- collect all possible places of migrations.
By default, migrations are looked for directory migrations
in directory of module class.
If you want to override this behavior, you can implement IHasMigrateNamespace
interface by module class.
EntityManager
Component for simple work with models, which have soft delete and typification.
Config:
/** module config **/ 'productManager' => [ "class" => "nullref\\product\\components\\EntityManager", 'hasImage' => false, 'hasStatus' => false, 'model' => [ 'class' => 'app\\models\\Product', 'relations' => [ 'category' => 'nullref\\category\\behaviors\\HasCategory', 'vendor' => 'app\\behaviors\\HasVendor', ], ], 'searchModel' => 'app\\models\\ProductSearch', ], /** ... **/
Available methods:
createModel()
- create new modelcreateSearchModel()
- create new search modelfindOne($condition)
- find one model by conditionfindAll($condition)
- find all models by conditionfind($condition = [])
- create ActiveQuery with conditiongetMap($index = 'id', $value = 'title', $condition = [], $asArray = true)
- get key=>value array of model by conditiondelete($model)
- delete modeldecorateQuery($query)
decorate query by settings of entity manger