alnutile/inertia-crud

使用 Inertia 和 Tailwind 实现一些基本的 CRUD 和 UI 功能

1.0.0 2023-03-30 16:08 UTC

README

run-tests Latest Version on Packagist

这假设你正在使用 JetStream,并将假设这些组件已经存在

感谢 https://github.com/spatie/package-skeleton-laravel

TL;DR

我对在项目中反复做同样的事情感到厌烦,所以创建了一个命令来输出我的存根文件,这样我就可以通过一个命令生成所有需要的 Inertia CRUD 文件。(DELETE 即将推出)

我知道外面还有其他的,但我想要一个符合我当前工作流程的。

你所需要做的就是运行命令

php artisan inertia-crud:create Dog Dogs

然后它会完成剩下的工作。

是的,我要求你输入大写的 Model 名称和复数形式,这样我就不需要编写那个逻辑。

然后你将得到这些文件

app/Http/Controllers/DogController.php
tests/Features/Http/Controllers/DogControllerTest.php
resources/js/Pages/Dogs/Index.vue
resources/js/Pages/Dogs/Show.vue
resources/js/Pages/Dogs/Edit.vue
resources/js/Pages/Dogs/Create.vue
resources/js/Pages/Dogs/Components/ResourceForm.vue

路由也将如此

Route::controller(\App\Http\Controllers\DogController::class)
    ->group(function () {
        Route::get('/dogs', 'index')->name('dogs.index');
        Route::get('/dogs/create', 'create')->name('dogs.create');
        Route::post('/dogs/create', 'store')->name('dogs.store');
        Route::get('/dogs/{dog}', 'show')->name('dogs.show');
        Route::get('/dogs/{dog}/edit', 'edit')->name('dogs.edit');
        Route::put('/dogs/{dog}', 'update')->name('dogs.update');
    });

概述

这将为 Inertia 准备一些简单的 CRUD 文件。

例如一个索引页面

PHP Faker 生成的示例数据

我只需要在 Index.vue 文件中排列字段和列。

然后当有人点击 添加 时,我还需要那个页面。

你会看到这有一个选择列表。这显示了我在基于 JetStream 的组件中包含的组件,这使得它同样容易实现。

控制器包括测试 🎉

所有这些路由都将创建,包括测试

Route::controller(\App\Http\Controllers\OfficeController::class)
    ->group(function () {
        Route::get('/offices', 'index')->name('offices.index');
        Route::get('/offices/create', 'create')->name('offices.create');
        Route::post('/offices/create', 'store')->name('offices.store');
        Route::get('/offices/{office}', 'show')->name('offices.show');
        Route::get('/offices/{office}/edit', 'edit')->name('offices.edit');
        Route::put('/offices/{office}', 'update')->name('offices.update');
    });

此包假设此布局。

  • app/Http/Controllers 用于控制器
  • routes/web.php 用于路由
  • resources/js/Components 用于其中一些
  • resources/js/Pages/ 用于与资源相关的 Vue crud

关于这一点,它假设

  • Tailwind
  • VueJS 3
  • Inertia
  • vue-toastification

一些组件来自 JetStream,几乎都是!

你可能需要在文件中修复 import AppLayout from '@/Layouts/AppLayout.vue';,我稍后将将其作为配置选项。

待办事项

  • 添加 DELETE
  • 添加配置文件以获取更多选项/路径等
  • 添加配置选项 AppLayout.vue

安装

您可以通过 composer 安装此包

composer require alnutile/inertia-crud --dev

用法

php artisan inertia-crud:create Dog Dogs

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件