dlds / yii2-giixer
扩展的 Yii2 Gii 模块,包含常用处理程序
Requires
- dlds/yii2-metronic: ~2.0.0
- dlds/yii2-rels: ~0.8.0
- kartik-v/yii2-dynagrid: ~1.4.0
- yiisoft/yii2-gii: ~2.0.0
- yiisoft/yii2-imagine: ~2.0.0
Requires (Dev)
- dev-master
- 4.0.47
- 4.0.46
- 4.0.45
- 4.0.44
- 4.0.43
- 4.0.42
- 4.0.41
- 4.0.40
- 4.0.39
- 4.0.38
- 4.0.37
- 4.0.36
- 4.0.35
- 4.0.34
- 4.0.33
- 4.0.32
- 4.0.31
- 4.0.30
- 4.0.29
- 4.0.28
- 4.0.27
- 4.0.26
- 4.0.25
- 4.0.24
- 4.0.23
- 4.0.22
- 4.0.21
- 4.0.20
- 4.0.19
- 4.0.18
- 4.0.17
- 4.0.16
- 4.0.15
- 4.0.14
- 4.0.13
- 4.0.12
- 4.0.11
- 4.0.10
- 4.0.9
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- v3.x-dev
- 3.0.15
- 3.0.13
- 3.0.12
- 3.0.11
- 3.0.10
- 3.0.9
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0
- 1.4.2
- 1.4.1
- 1.4
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3
- 1.2
- 1.1
- 1.0
- 0.6
- v0.5
- v0.4
- v0.3
- 0.2
This package is not auto-updated.
Last update: 2024-09-25 12:42:51 UTC
README
为 Yii2 扩展的 gii 模块,包括一系列有用的处理程序、辅助工具、特性和其他组件。此模块根据自身组件生成所需的模型、控制器和其他类。当您使用 yii2-giixer 模块时,默认的 yii-gii 生成器不可用。
安装
通过 composer 安装此扩展是首选方式。
运行以下命令:
$ composer require dlds/yii2-giixer
或者将以下内容添加到您的 composer.json
文件的 require
部分:
"dlds/yii2-giixer": "~3.0.0"
迁移
无需任何迁移即可运行。模块本身不会在数据库中存储任何数据。
结构
Giixer 定义了自己的易于维护和扩展的应用程序结构,这与默认(由 gii 生成的)结构略有不同。以下您可以找到 giixer 会生成什么以及如何生成。
ActiveRecords
Giixer 使用自己的 ActiveRecords(AR)结构。以下是所有 4 个 AR 及其代表的意义的描述。每个都在应用的概念层面上。
- 基础 AR
- 顶级且不可编辑的 AR
- 仅由 giixer 本身维护。
- 始终扩展 GxActiveRecord
- 下一次 giixer 生成后,手动更改将丢失
- 文件位于
common\models\db\base
或common\modules\modulename\models\db\base
- 通用 AR
- 扩展 基础 AR
- 可编辑并由开发人员维护
- 任何 giixer 生成后,手动更改不会丢失
- 文件位于
common\models\db
或common\modules\modulename\models\db
- 只有此模型可以直接由应用程序使用
结构图显示在 此处
此 AR 模型结构让您有机会轻松更新您的数据库模式,同时仍然能够重新生成您的 AR 模型而不会丢失当前的代码更改。
在 MyModel 中显示了存储在 基础 AR 中的某些附加功能
ActiveQueries
每个 AR 模型都生成一个自定义 ActiveQuery 类,并将其分配给 基础 AR。
在 AR 生成期间,Giixer 创建以下 3 个 ActiveQuery(AQ)类。
- 通用 AQ
- 扩展
\yii\db\ActiveQuery
- 可编辑并由开发人员维护
- 文件位于
common\models\db\base
或common\modules\modulename\models\db\base
- 始终在 基础 AR 中加载(只能直接由应用程序使用)
- 扩展
基础 AR 将自动加载适当的 AQ。
结构图显示在 此处
Giixer 生成默认 AQ 逻辑,以便能够轻松使用适当的 AR 模型类在自定义查询中。
默认 AQ 逻辑显示在 MyModelQuery
辅助工具
Giixer 定义了一组有用的辅助工具。以下您可以看到 giixer 提供哪些辅助工具。
URL 辅助工具
为每个 AR 模型生成自己的 URL 路由和规则辅助工具。
Giixer 为 backend
和 frontend
应用程序创建以下 2 个辅助工具(HLP)。
- 路由辅助工具
- 继承自
\dlds\giixer\components\helpers\GxRouteHelper
或你在helperRouteBaseClass
中设置的定制类(参见 配置 部分) - 包含 giixer 生成的所有默认路由
- 直接由应用程序使用
- 前端文件位于
frontend\components\helpers\url\routes
或frontend\modules\modulename\components\helpers\url\routes
- 后端文件位于
backend\components\helpers\url\routes
或backend\modules\modulename\components\helpers\url\routes
- 继承自
- 规则 HLP
- 继承自
\dlds\giixer\components\helpers\GxUrlRuleHelper
或你在helperRuleBaseClass
中设置的定制类(参见 配置 部分) - 包含所有 giixer 生成的路由的规则
- 通常用于 URL 规则配置中
- 前端文件位于
frontend\components\helpers\url\rules
或frontend\modules\modulename\components\helpers\url\rules
- 后端文件位于
backend\components\helpers\url\rules
或backend\modules\modulename\components\helpers\url\rules
- 继承自
这两个辅助类的主要思想是将规则/路由封装在单个类中,并为开发者提供易于使用的接口。
基本的路由和规则辅助类示例: MyBasicRouteHelper,MyBasicUrlRuleHelper
为了能够在翻译文件(i18n)中定义可翻译的 URL slug,你必须在应用程序引导中加载你的规则,如下所示。否则,翻译将不会工作。参见 Yii2 动态添加规则
class AppBootstrapHandler implements \yii\base\BootstrapInterface {
public function bootstrap($app)
{
return $this->addMainRules($app);
}
/**
* Adds main application rules
*/
protected function addMainRules(\yii\web\Application $app)
{
$rules = require(\Yii::getAlias('@frontend/config/url/rules.php'));
return $app->getUrlManager()->addRules($rules, false);
}
}
其中 @frontend/config/url/rules.php
应该如下所示。
$rules = [
// ...
MyBasicUrlRuleHelper::index(),
MyBasicUrlRuleHelper::view(),
// ...
];
return array_merge(
$rules, require(__DIR__.'/rules-local.php')
);
?>
然后在应用程序配置中,只需设置你的 AppBootstrapHandler 以进行处理。
// ...
'bootstrap' => [
'\frontend\components\handlers\AppBootstrapHandler',
// ...
]
// ...
提示:通常,你希望有更好的外观的 URL,其中不显示模型主键。例如,你有一个自己的 CMS 系统,其中每个 Post
模型都有自己的 slug,看起来像 my-custom-post-title
,并且你希望最终的 URL 看起来像 http://www.mydomain.com/my-custom-post-title/
。在这种情况下,你必须根据 MyAdvancedRuleHelper 更新你的 UrlRuleHelper 类
模型辅助类
此辅助类定义了在 GxActiveRecord 类中使用的方法。其中包含将查询参数适配以传递批量赋值的方法,以及轻松更改验证规则或场景定义的方法。
更多信息请参见 GxModelHelper
其他辅助类
Giixer 定义了一些其他辅助类,这些类在基本的应用程序操作中更为复杂且有用。每个辅助类都有自己详尽的文档。
更多信息请参见 Giixer 辅助类
处理器
Giixer 定义了两个主要的处理器类,这对于控制器保持其方法精简和有序非常有用。
- GxCrudHandler
- 定义了自己的创建、读取、更新、删除方法的方法
- 在每次操作期间调用 GxCrudEvent,其中包含有关操作结果的所有数据
- 通常用于操作标准 AR 模型类及其相应的数据库条目
- GxHandler
- 定义了根据验证结果处理适当的回调的自己的方法来验证模型
- 通常用于非 AR 模型的操作,其中 save() 意味着创建多个 AR 等...
更多信息请参见 Giixer 处理器
配置
通过将其添加到应用程序引导中,在配置文件中启用 gii 模块。
$config['bootstrap'][] = 'gii';
将默认的 gii 模块类替换为 giixer 类。
$config['modules']['gii'] = [
'class' => 'dlds\giixer\Module',
];
您还可以通过设置额外的配置选项来修改 giixer 模块的行为以满足您的需求。请参见下文。
namespaces
选项
定义命名空间映射到生成的类。当某些类的命名空间与默认命名空间不匹配时,这很有用。例如,如果您的应用程序分为模块,并且需要为这些模块生成类。
[
'^{Modules}[a-zA-Z]+Form$' => '{module}\models\\forms',
'^Core[a-zA-Z]+Form$' => 'models\\forms',
'^{modules}-[a-z-]+$' => '{module}\\views',
]
在上面的示例中,我们可以看到我们的应用程序包含模块,还有一些直接放置的 "Core" 文件。
您可以看到,我们还定义了视图的规则,以便能够将生成的视图文件放置到适当的文件夹中。
在指定规则时,您可以使用一些特殊的标签。
特殊标签
- {Module} - 将被替换为当前模块名称
- {Modules} - 将被替换为所有模块名称的正则表达式
- {module} - 将被替换为当前模块 ID
- {modules} - 将被替换为所有模块 ID 的正则表达式
要使用这些特殊标签,您必须指定您的模块名称和 ID。
[
'edu' => 'Edu',
'shop' => 'Shop',
// ...
]
数组索引用于模块 ID,数组值用于模块名称。
在生成过程中,Giixer 将自动替换这些标签,使最终的规则看起来如下 (我们正在生成一些 Edu 模型)。
[
'^(Edu|Shop){1}[a-zA-Z]+Form$' => 'modules\edu\models\\forms',
'^Core[a-zA-Z]+Form$' => 'models\\forms',
'^(edu|shop){1}-[a-z-]+$' => 'modules\edu\\views',
]
bases
选项
定义特定组件、控制器和其他应用程序类的基类。这是基于派生类的正则表达式和基类的完全限定名称。
[
BaseHelper::RK_CONTROLLER_BE => [
'{Modules}[a-zA-Z]+Controller$' => '{module}\\controllers\\base\\{Module}BaseController',
'Core[a-zA-Z]+Controller$' => 'controllers\\base\\CoreBaseController',
],
BaseHelper::RK_CONTROLLER_FE => [
'{Modules}[a-zA-Z]+Controller$' => '{module}\\controllers\\base\\{Module}BaseController',
'Core[a-zA-Z]+Controller$' => 'controllers\\base\\CoreBaseController',
],
// ...
]
在上面的配置中,您可以看到模块控制器的配置,它们具有自定义的基类。
如果指定了自定义控制器(前端或后端)的基类,它必须扩展 GxController。否则,将直接使用 GxController 作为父类。(GxController 扩展默认的
\yii\web\Controller
)。
如果设置了自定义路由助手基类,它必须扩展 GxRouteHelper。否则,将直接使用 GxRouteHelper 作为父类。
如果设置了自定义路由助手基类,它必须扩展 GxUrlRuleHelper。否则,将直接使用 GxUrlRuleHelper 作为父类。
translations
选项
定义应自动生成的翻译文件。此选项由包含语言代码的数组定义。
['en', 'de', 'cs']
对于上述内容,将生成英语、德语和捷克语的翻译文件。
messages
选项
定义自定义翻译类别。
[
'dynagrid' => [
'^{Modules}[a-zA-Z]+$' => '{module}/dynagrid',
],
],
对于上述生成器,在匹配正则表达式 '^Edu[a-zA-Z]+$' 的类中,使用类别 'edu/dynagrid' 而不是 'dynagrid'。
有关更多信息,请参见 Giixer 模块主类
版权所有 © Digital Deals s.r.o. 2016