innovmt / mt-jetstream-inertia-generator
使用 Laravel Jetstream、Inertiajs、Vue.js、Pagetables 和 Tailwindcss 的 Admin CRUD 生成器。项目改编自 coolsam726/jetstream-inertia-generator
Requires
- php: ^7.4|^8.0
- ext-json: *
- doctrine/dbal: ^3.0
- illuminate/support: ^8
- inertiajs/inertia-laravel: ^0
- laravel/helpers: ^1.4
- laravel/jetstream: ^2.3
- savannabits/laravel-pagetables: ^1.0
- spatie/laravel-permission: ^4.0
- yajra/laravel-datatables: ^1.5
Requires (Dev)
- orchestra/testbench: ^v6.0
- phpunit/phpunit: ^9.4
This package is not auto-updated.
Last update: 2024-09-20 00:08:18 UTC
README
Jetstream Inertia Generator 即 jig,允许您生成与 Laravel 项目兼容的简单 Admin CRUD(创建、读取、更新、删除)代码,该项目由 Jetstream - Inertia - Vue.js 堆栈提供支持。 
场景
您正在开发一个下一代项目。数据模型复杂。需要管理员管理多个 CRUD,以支持主要终端用户功能。您不希望花费 几天甚至几个月 来为所有 CRUD 编写样板代码。如果是这样,这个包将帮助您。只需遵循以下简单步骤
- 为您的 CRUD 表生成迁移,例如 articles,并运行
php artisan migrate(约 2 分钟) - 使用此包,只需运行
php artisan jig:generate articles(约 3 秒!!!) - 构建您的 CSS 和 JavaScript(约 27 秒)完成!在约 2 分钟半 内,您将获得一个完全工作的模块,包括 -
- 模型
- 管理员控制器 - Index、Create、Show、Edit、Store、Update、Delete
- API 控制器 - Index、Store、Show、Update、Delete
- 一个授权策略 - viewAny、view、create、update、delete、restore、forceDelete
- 为 spatie/laravel-permissions 生成的权限 - articles、articles.index、articles.create、articles.show、articles.edit、articles.delete
- 前端菜单条目
- 前端数据表,包含操作,归功于使用 Yajra Datatables 和 datatables.net
- Tailwindcss 驱动的 CREATE 和 EDIT 表单
- Tailwindcss 驱动的 SHOW 视图
- Web 和 API 路由
- 验证和授权请求类
还能要求什么?将一天的工作缩短到不到 3 分钟。
依赖项
如果您已遵循 Jetstream - Inertia - Vue.js 安装说明,则项目将使用最小配置运行。其他重要依赖项,您必须配置包括
- Spatie Laravel Permissions - 用于管理角色和权限。其迁移将在资产发布期间发布,之后您可以继续配置用户特性。
- Laravel Sanctum - 用于管理 API 和状态化认证。由于整个应用程序将是一个单页应用程序,请确保您已在
app/Http/Kernel.php中配置 sanctum 中间件,如下所示
'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, ... ],
安装
- 您可以通过 composer 安装此包
composer require savannabits/jetstream-inertia-generator
- 通过运行以下命令安装必要的
npm开发依赖项:如果您正在使用 npm
npm install --include=dev --legacy-peer-deps @headlessui/vue pagetables popper.js @babel/plugin-syntax-dynamic-import dayjs dotenv numeral portal-vue postcss postcss-import pusher-js laravel-echo sass sass-loader vue3-vt-notifications vue-flatpickr-component vue-numerals vue-pdf mitt "https://github.com/sagalbot/vue-select/tarball/feat/vue-3-compat"
或者如果您正在使用 yarn
yarn add -D @headlessui/vue pagetables popper.js @babel/plugin-syntax-dynamic-import dayjs dotenv numeral portal-vue postcss postcss-import pusher-js laravel-echo sass sass-loader vue3-vt-notifications vue-flatpickr-component vue-numerals vue-pdf mitt "https://github.com/sagalbot/vue-select/tarball/feat/vue-3-compat"
请随意配置您自己的颜色调色板,但为了保证一致性,请务必包括primary、secondary、success和danger变体,因为它们在jig模板中使用。3. 发布包的资产、配置、模板、组件和布局。这是您获取管理布局和所有生成代码中使用的vue组件所必需的。
选项1(适用于全新安装)
php artisan vendor:publish --force --provider="innovmt\MTJetstreamInertiaGenerator\JetstreamInertiaGeneratorServiceProvider"
选项2(如果您正在升级包或已对本地更改不希望覆盖,则很有用。)注意:如果您只想更新一些已发布的文件,请仅删除要更新的已发布文件,然后运行以下相应的命令
php artisan vendor:publish --tag=jig-blade-templates #Publishes resources/views/app.blade.php. If it already exists, use --force to replace it php artisan vendor:publish --tag=jig-config #Publishes the config file. If it exists use --force to replace it. php artisan vendor:publish --tag=jig-routes #Publishes routes/jig.php to hold routes for generated modules.If you have already generated some routes, be sure to back them up as this file will be reset if you --force it. php artisan vendor:publish --tag=jig-views #publishes Vue Components, app.js, bootstrap.js and Layout files. Use --force to force replace php artisan vendor:publish --tag=jig-assets #publishes logos and other assets php artisan vendor:publish --tag=jig-compiler-configs #publishes webpack.config.js and tailwind.config.js php artisan vendor:publish --tag=jig-migrations #Publish database migrations
- 然后通过发布其迁移来完成spatie/laravel-permission的安装步骤。
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
注意:当第一次生成CRUD时,将自动将title字段添加到roles和permissions表中。
- 将
JigMiddleware添加到全局中间件和app/Http/Kernel.php中的web中间件组。
protected $middleware = [ ..., \innovmt\MTJetstreamInertiaGenerator\Middleware\JigMiddleware::class, ]; protected $middlewareGroups = [ 'web' => [ ..., \innovmt\MTJetstreamInertiaGenerator\Middleware\JigMiddleware::class, ], ];
- 通过在
app/Http/Kernel.php中的api中间件组中添加以下内容,允许Sanctum API的第一方访问
protected $middlewareGroups = [ 'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, ... ], ];
- 修改.env以包含以下键
APP_BASE_DOMAIN=mydomain.test APP_SCHEME=http #or https #optional mix_app_uri (The path under which the app will be served. It is recommended to run the app from the root of the domain. MIX_APP_URI= APP_URL=${APP_SCHEME}://${APP_BASE_DOMAIN} #If MIX_APP_URI is empty. #APP_URL=${APP_SCHEME}://${APP_BASE_DOMAIN}/${MIX_APP_URI} #If MIX_APP_URI is not empty. # Append the following key to your .env to allow 1st party consumption of your api: SANCTUM_STATEFUL_DOMAINS="${APP_BASE_DOMAIN}" #You can add other comma separated domains
- 创建storage:link(请参阅laravel文档),以便通过web访问公共磁盘资产(例如徽标)
php artisan storage:link
用法
初始种子管理用户和角色
当您运行php artisan vendor:publish --tag=jig-migrations时,会发布一个迁移,创建一个名为Administrator的初始默认用户和一个名为administrator的角色,以使您能够以管理员权限访问系统。用户账户的凭据如下:
- 电子邮件:admin@savannabits.com
- 密码:password
在迁移后使用这些凭据登录并探索应用程序的所有部分
首先按顺序创建权限、角色和用户模块
在生成管理之前,运行以下命令以生成用户访问控制模块
php artisan jig:generate:permission -f php artisan jig:generate:role -f php artisan jig:generate:user -f
现在您可以使用以下部分的步骤生成您想要的任何其他CRUD。
生成CRUD的一般步骤
- 使用
php artisan make:migration命令生成您表的迁移和写入迁移。 - 使用
php artisan migrate命令将迁移运行到数据库中 - 使用
php artisan jig:generate命令生成模块的完整管理脚手架 - 如果需要,修改和自定义生成的代码以符合您的具体要求。注意:如果CRUD已存在,并且您想要生成,则可以使用
-f或--force选项强制替换文件。
示例
假设您想生成一个books表
php artisan make:migration create_books_table
- 打开您的迁移并根据需要修改它,添加您的字段。然后运行迁移。
php artisan migrate
- 有趣的部分:使用jig使用以下命令为书籍创建整个管理模块
php artisan jig:generate books #Format: php artisan generate [table_name] [-f]
注意:要获取在幕后调用的所有jig命令的完整列表以及jig:generate命令的完整说明,您可以运行以下
php artisan jig --help php artisan jig:generate --help
上述命令将生成多个文件,并将路由添加到您的api.php和web.php路由文件中。它还会将菜单条目追加到已发布的Menus.json文件中。生成的vue文件放置在js文件夹中的Pages/Books文件夹下。
- 最后,运行
yarn watch, yarn dev或yarn prod来编译资产。这样,您就有了CRUD。
角色、权限和侧边栏菜单
-
默认情况下,模块生成会生成以下权限
- index
- create
- show
- edit
- delete
-
权限的命名约定是${module-name}.${perm},例如payments.index,users.create等。
-
此包使用策略来管理访问控制。每个生成的模块都生成一个策略,带有默认的laravel操作。
- viewAny, view, store, update, delete, restore, forceDelete 上述生成的权限在这些策略中进行检查。如果您需要修改任何访问权限,请查看策略。
-
还需要生成特殊的权限来控制侧边栏菜单的访问。这些权限不应该包含由点分隔的两个部分,而应该只有一个部分。
-
菜单在位于
./resources/js/Layouts/Jig/Menu.json的 json 文件中进行配置。- 对于所有菜单项,json 键必须与控制该菜单的权限匹配。在为每个模块生成时,会生成一个不带动词的权限,用于此目的。例如,生成一个
payments模块将生成一个payments权限。然后,支付菜单的 json 键必须是payments。 - 对于父菜单和可能不匹配任何模块的其他菜单,您必须创建一个具有键名的权限来控制其访问。例如,如果您有一个名为
master-data的父菜单,您必须生成一个具有相同名称的权限。
- 对于所有菜单项,json 键必须与控制该菜单的权限匹配。在为每个模块生成时,会生成一个不带动词的权限,用于此目的。例如,生成一个
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
有关详细信息,请参阅 贡献指南。
安全
如果您发现任何安全问题,请通过电子邮件 maosa.sam@gmail.com 而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。
