binondord / laravel-scaffold
扩展Laravel 5的生成器脚手架。基于jrenton/laravel-scaffold和laralib/l5scaffold
Requires
- php: >=5.4.0
- fzaninotto/faker: ^1.5
- illuminate/support: ~5.0
- mockery/mockery: ^0.9.4
This package is not auto-updated.
Last update: 2024-09-14 17:37:24 UTC
README
Laravel 5 Scaffold命令
自动生成您启动所需的所有文件。生成默认布局,设置bootstrap或foundation,提示javascript文件(选项为ember、angular、backbone、underscore和jquery),创建模型、控制器和视图,运行迁移,更新路由,并用模拟数据填充新表 - 所有这些都在一个命令中完成。
安装
首先通过Composer安装此包。编辑项目的composer.json
文件,以添加对binondord/laravel-scaffold
的要求。
"require-dev": {
"binondord/laravel-scaffold": "2.1.*"
}
接下来,从终端更新Composer。
composer update
此操作完成后,最后一步是添加服务提供者。打开app/config/app.php
,并将新项添加到providers数组中。
'Binondord\LaravelScaffold\GeneratorsServiceProvider'
这就完成了!您已经准备就绪。从终端运行artisan
命令,查看新的scaffold
命令。
php artisan
配置
配置所有文件目录、类名、视图文件、是否使用仓库模式、要下载的css/js文件,并且您可以从模板文件夹内完全自定义视图和布局文件!请确保运行以下命令
php artisan vendor:publish --tag=config --force
php artisan vendor:publish --tag=templates --force
以将配置文件包含在您的配置文件夹中。
命令
scaffold
会提示您输入布局文件和模型
scaffold:model
会提示您输入模型
scaffold:file "filename"
是您可以从一个文件添加多个模型的方法
scaffold:update
搜索模型定义文件(在您的配置文件中定义)中的更改,并相应地更新您的模型/迁移。
scaffold:reset
删除之前创建的文件,但不会删除已修改的文件。
模板
此命令利用模板文件,因此您可以在您的应用目录(在配置文件中提供的位置)的“templates”文件夹中(默认为app/templates)指定视图、控制器、仓库和测试的格式。
您也可以添加自己的视图,只要在配置文件中的名称与模板文件夹中的模板名称相对应。
新特性
###维护模型定义的运行列表
现在有一个非常酷的scaffold:update
命令!在您的配置文件中,您可以选择指定一个“modelDefinitions”文件,在此文件中放置所有模型定义。下面是一个示例。
resource = true
namespace = Oxford
University hasMany Department string( name city state homepage ) -nt
Department belongsTo University, hasMany Course string( name description ) number:integer
resource = false
Course belongsTo Department, hasMany Lesson string( name description ) integer( number credits ) -sd
- 资源是指您的控制器是否是资源控制器。所有控制器都将遵循之前设置的
resource
,因此您可以混合和匹配。 - 如果设置了命名空间,则它将应用于全局,否则您可以通过在模型名前加上命名空间来指定特定模型。
当您更新此文件并运行php artisan scaffold:update
时,它将检查发生了什么变化,并自动更新您的模型/迁移!它将在与模型文件相同的目录中保留一个“缓存”文件以跟踪更改,因此请勿编辑它!这允许命令知道是否有任何内容被删除。
可以从此文件中删除模型、字段和关系,并自动生成迁移来删除相应的模型/字段/外键,同时更新模型。
模型语法
定义模型的语法非常简单。请看一些示例
Book title:string published:datetime
或者,您还可以添加一个关系
Book belongsTo Author title:string published:datetime
...并且这将自动将“author”方法添加到您的Book模型中,并在迁移表中添加“author_id”。它还会检查作者表是否在书表之前或之后创建,并自动分配外键。
您还可以包含命名空间
BarnesAndNoble\Book belongsTo Author title:string published:datetime
不想键入所有正确的信息?没关系!
book belongsto author title:string published:datetime
您还可以添加多个关系!
Book belongsTo Author, hasMany Word title:string published:datetime
还有几个选项可以附加到模型上
-nt
是一个选项,可以将特定模型的时戳设置为false(默认为true)-sd
是一个选项,可以将特定模型的软删除设置为true。
有很多属性是“字符串”、“整数”等?没问题,只需分组即可!
Book belongsTo Author string( title content description publisher ) published:datetime
如果您使用上述语法,请严格遵守(目前如此)。
命令视频概述
阅读很无聊...看看这个概述:[链接](https://www.youtube.com/watch?v=6ESSjdUSNMw)
这个视频现在有点过时了(添加了更多酷炫的功能),但想法仍然是相同的。
附加评论
生成器使用faker来随机在每个表中生成10行。它会尝试确定类型,但您可以打开种子文件进行验证。有关Faker的更多信息:[链接](https://github.com/fzaninotto/Faker)
奖励
想要进一步优化scaffold过程?!?!设置foreman,将jrenton/laravel-scaffold添加到require-dev部分,设置一个用于复制以添加laravel scaffold服务提供者的app文件,设置一个用于复制以设置数据库的数据库文件,并最终设置一个models.txt文件以复制(示例以上)。将此scaffold文件保存在方便的位置。
然后,您可以编辑bash文件以包含一个新的别名
alias laravel="foremancreate"
foremancreate(){
foreman build /path/to/htdocs/folder/$1 /path/to/scaffold.json
cd /path/to/htdocs/folder/$1
composer update
php artisan scaffold:file "app/models.txt"
php artisan migrate
php artisan db:seed
}
然后运行laravel project-name
,并观看您的应用程序如何完全构建和scaffold
在youtube上观看演示
1.0版本要添加的功能
- -nv选项表示没有视图
- -m选项表示仅迁移(枢轴表)
- 添加字段长度选项(name:string|40)
- 删除时的限制/级联/空值
- 如果删除模型,则删除模型/控制器/存储库/视图/种子/测试
- 如果删除属性,则更新模型/控制器/存储库/视图/种子/测试
未来想法
- 添加命令
scaffold:rollback
以删除在最后一次scaffold更新期间创建的任何文件。 - 根据指定的js框架自动创建js文件。