schmunk42 / giic
命令行运行 Gii 的工具集
Requires
- php: >=5.3.0
- ext-xsl: *
- yiisoft/yii: >=1.1.12,<2.0
README
本包提供在命令行运行 Gii 的工具集。它可以运行无限数量的预配置的 Gii 生成器模板。
简介
"我已经配置了几个模板,通过 Gii,我可以选择与数据库表关联的模板来创建模块代码。它运行得很好,节省了我很多时间。如果我能用 bash 脚本或 php 脚本实现它,那就太棒了!"
"目前还不行,而且我担心,在您的整个原型设计阶段也不太可能实现。 "
unixjunky 和 Samdark, 2010
但我们让它工作了!
它是如何工作的?
Giic 将生成器和 Gii 模块包装在 GiicApplication
中,这是一个 有趣的混合 的 CConsoleApplication
和 CWebApplication
。
您可以使用自定义的 配置文件 来指定您的输入参数。每个 action
都对应于在 web 前端点击 生成 按钮的操作。只需指定模型属性,就像您在 web 应用程序中做的那样。有关更多详细信息,请参阅“配置”部分的链接。
注意:此代码是实验性的,请在将其用于项目之前进行 备份。如果您发现任何问题,请在此处报告。
资源
安装
通过 composer
composer.phar require schmunk42/giic
使用方法
php vendor/schmunk42/giic/giic.php giic generate alias.to.giic-config
设置
Giic 可以安装在任何应用程序中,但为了更好地了解其工作原理,我们将通过一个具有 CRUDs 的 Yii 扩展(用于 MySQL 示例数据库 Sakila)的示例设置来引导您。
为了测试驱动,我们将安装 Phundament 以及 Sakila 示例模块 schmunk42/yii-sakila-crud。此模块为 MySQL 示例数据库 "Sakila" 提供了 giic 的迁移和配置。它还包括生成的 CRUDs 以供测试。
安装开发(!) 版本的 Phundament 和演示扩展
composer.phar create-project -sdev phundament/app app-crud-test
cd app-crud-test
composer.phar require schmunk42/yii-sakila-crud:@dev
提示:Phundament 中预配置了标准的 gii-template-collection 使用。
将 Sakila 迁移添加到 app/config/console-local.php
'import' => array(
'vendor.phundament.gii-template-collection.components.*'
),
'aliases' => array(
'sakila' => 'vendor.schmunk42.yii-sakila-crud.*'
),
'commandMap' => array(
'migrate' => array(
// enable eg. data migrations for your local machine
'modulePaths' => array(
'sakila' => 'vendor.schmunk42.yii-sakila-crud.migrations',
),
),
),
将 Sakila 模块和 MySQL 数据库添加到 app/config/main-local.php
'modules' => array(
'sakila' => array(
'class' => 'vendor.schmunk42.yii-sakila-crud.SakilaModule'
)
),
'components' => array(
'db' => array(
'tablePrefix' => '',
'connectionString' => 'mysql:host=localhost;dbname=giic',
'emulatePrepare' => true,
'username' => 'test',
'password' => 'test',
'charset' => 'utf8',
),
)
运行迁移以设置数据库
app/yiic migrate
由于 Yii 只能创建 CConsoleApplication
,我们必须使用提供的 CLI 入口脚本来创建我们的混合应用程序。运行以下命令来调用已配置的操作
php vendor/schmunk42/giic/giic.php giic generate sakila
您的控制台输出应类似于这个。
打开 http://localhos/app-crud-test/www/index.php?r=sakila 来检查您的 CRUDs。使用 admin
/ admin
登录。
bonus: giix
配置文件还会在 application.extensions.giix
中查找 giix 生成器,您可以下载 giix 并将其放置在扩展中。
配置
"大问题" - 生成两种类型模型(gtc & giix)和四种类型 CRUDs 到五个不同的位置的操作。
查看 Sakila 配置,查看注释以获取说明。
故障排除
- 请注意XSLT错误,例如:实体:第134行:解析错误:实体引用:期望';' / 实体nbs未定义 / ...
- 如果没有错误或输出,请检查您在gii浏览器中的生成器模板
- 将文件权限设置为
777
在/app/runtime/gii-1.1.13
- 运行
composer.phar update
以获取最新包
问题
-
默认情况下,所有输出文件都会被以下内容覆盖
define('GIIC_ALL_CONFIRMED', true);
修复您的代码模型(GiixModelCode
,GiixCrudCode
),覆盖此方法
public function confirmed($file)
{
if (defined('GIIC_ALL_CONFIRMED') && GIIC_ALL_CONFIRMED === true) {
return true;
} else {
return parent::confirmed($file);
}
}
注意:您可能需要修复现有的扩展,例如
giix
非常欢迎帮助,向我们发送拉取请求!
已测试生成器
- gii-template-collection(模型和CRUD)
- giix(模型和CRUD)