binondord/laravel-scaffold

扩展Laravel 5的生成器脚手架。基于jrenton/laravel-scaffold和laralib/l5scaffold

2.1.1-alpha 2015-11-24 09:24 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:37:24 UTC


README

Build Status

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文件。