asbsoft/yii2-common_2_170212

为ASB项目提供的实验性Yii2通用扩展

安装: 27

依赖项: 9

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放性问题: 0

类型:yii2-extension

2.14.8 2018-12-30 13:10 UTC

README

我喜欢Yii2框架,但我想在这个框架中拥有更多用于构建独立、可重用和可继承模块的工具。

以下是一些由“联合模块”提供的实验性扩展,供我的项目使用。

Yii2有两个应用程序模板 - 基本和高级。为了满足这两种需求,需要更复杂的配置,而在Yii2中配置太多。

注意

  • 将composer.json中“require”部分定义的所有依赖项添加到系统中。

  • 在此处使用autoload.php进行额外的自动加载注册。

  • 通过composer或手动定义别名(例如:Yii::setAlias('@asb/yii2/common_2_170212', '@vendor/asbsoft/yii2-common_2_170212');)在系统中注册命名空间\asb\yii2\common_2_170212。此定义可以放置在index.php中,最常用的配置或更好的方式是在@vendor/yiisoft/extensions.php中,以便在任何基本/前端/后端/控制台应用程序中提供工作。

  • 在config文件夹中创建自己的配置文件。使用*.EXAMPLES.php文件作为示例。

  • 运行迁移。

  • 要使用附加功能,需要从\asb\yii2\common_2_170212\base\UniModule扩展模块,从\asb\yii2\common_2_170212\controllers\BaseController和BaseAdminController扩展控制器,从asb\yii2\common_2_170212\models\DataModel扩展活动记录模型。此外,将应用程序配置中的'components' => [ //... 'view' => [ 'class' => 'asb\yii2\common_2_170212\web\UniView', ], // 用于处理视图继承此操作提供模块继承机制:配置和消息将合并,视图和操作将从最新的子类获取。

  • 扩展还包括一些功能,用于切换由asb\yii2\common_2_170212\i18n\LangHelper提供的多语言支持,以及由asb\yii2\common_2_170212\base\CommonBootstrap引导。

使用模块继承

  • 从base\UniModule扩展您的祖先模块。您可以在祖先模块类的根目录中创建另一个模块,然后将其作为子模块添加到应用程序或另一个模块容器的配置中。

  • 现在工作如下

    • 配置和参数将与祖先的数据合并
    • 消息将合并
    • 对于路由(s),获取最新的文件(s)
    • 对于视图(s),获取最新的文件(s) - 可能仅重定义所需的文件(s)
    • 控制器和模型 - 传统继承
    • 要使用模型继承,您必须在模块的config/config.php中(重新)定义使用模型,格式为alias => class name或object array:'models' => [..., 'ALIAS' => 'VENDOR\yii2\modules\MODULE_NAME\models\News', ...],例如'News' => 'asb\yii2\modules\news_1\models\News'(在模块祖先中)'News' => 'asb\yii2\modules\news_2\models\News'(在模块子代中),并且为了访问模型,您必须在每个地方使用(仅适用于扩展UniModule的模块中的模型)
      • $module->getDataModel($alias, $params = [], $config = []) // 获取并初始化模块对象或相同的静态方法:ModuleClassName::model($alias, $params = [], $config = [])
    • 要使用资产继承,您必须在模块的config/config.php中(重新)定义使用资产,格式为alias => class name:'models' => [..., 'ALIAS' => 'CLASSNAME', ...],在视图中使用$assets = $this->context->module->registerAsset('MyAsset', $this);而不是$assets = MyAsset::register($this);,在新的资产中最好使用旧资产作为'depends'而不是子级 - 新的CSS文件将在之后包含并重定义旧样式