sentgine / crudwizard

这是一个简单但强大的Laravel包,用于轻松实现CRUD操作。

v2.0.8 2023-10-03 07:25 UTC

This package is auto-updated.

Last update: 2024-10-03 09:36:18 UTC


README

License Latest Stable Version Total Downloads

Crudwizard是一个强大的Laravel包,旨在简化为您的Laravel应用程序生成CRUD(创建、读取、更新、删除)功能的过程。使用Crudwizard,您可以通过几个简单的命令轻松创建和管理数据库表、模型、控制器、视图和路由。

特性

  • 高效的CRUD生成:Crudwizard提供了一种简化的方法来生成CRUD操作,使您能够在几秒钟内创建数据库迁移、模型、控制器、视图、测试、工厂和路由。
  • 自定义模板:该包提供了一系列可定制的视图,使您能够根据项目的特定需求调整生成的代码。

要求

  • Laravel 10.x或更高版本。
  • PHP 8.0或更高版本。
  • 使用Tailwind CSS使您的生活更轻松。

安装

(1) 您可以通过运行以下命令通过Composer安装此包:

composer require --dev sentgine/crudwizard

(2) 您必须发布配置和视图文件以获得更好的控制。

php artisan vendor:publish --tag="crudwizard"

(3) 然后,在您的Laravel项目根目录中,键入以下命令。它将询问您控制器的名称和表单字段。

php artisan crudwizard:generate

php artisan crudwizard:generate --resource="post"

有时您可能想覆盖现有的资源文件。默认情况下,Crudwizard不允许您这样做,因为它会跳过覆盖您的文件。您可以在命令中添加--force选项。

php artisan crudwizard:generate --resource="post" --force

(4) 您还可以指定一个前缀。然后它将在Dev/Admin下创建控制器,在dev/admin文件夹下创建视图。

php artisan crudwizard:generate --resource="post" --prefix="dev/admin"

(5) 如果您犯了错误,您可以简单地删除资源文件。请注意,这不会删除迁移文件。您必须手动删除它。

php artisan crudwizard:delete --resource="post"

php artisan crudwizard:delete --resource="post" --prefix="dev/admin"

(6) 为了让您快速开始,我建议您复制并粘贴以下整个Tailwind CSS @layer组件指令。您可以在以后自定义它。

@layer components {
    /* Common */
    .crudwizard-resource-container {
      @apply w-full p-10 grid grid-cols-1 gap-4;
    }
    .crudwizard-top-container {
        @apply grid grid-cols-1 gap-5 md:flex justify-between whitespace-nowrap;
    }
    .crudwizard-top-sub-container {
        @apply grid grid-cols-1 gap-3 md:flex;
    }
    .crudwizard-resource-title {
        @apply font-semibold text-2xl;
    }    

    /* Table */
    .crudwizard-table-container {
        @apply rounded-md border grid grid-cols-1 gap-3;
    }
    .crudwizard-table {
        @apply text-left w-full shadow-lg;
    }
    .crudwizard-thead {
        @apply bg-gray-700 text-white;
    }
    .crudwizard-body {
        @apply text-left;
    }
    .crudwizard-th {
        @apply p-2;
    }
    .crudwizard-th-action {
        @apply w-[200px];
    }
    .crudwizard-tr {
        @apply border-b;
    }
    .crudwizard-td {
        @apply px-2;
    }
    .crudwizard-td-action {
        @apply border p-2 px-3 grid grid-cols-1 gap-3  md:w-auto md:flex;
    }
    .crudwizard-pagination-container {
        @apply mt-2;
    }
    .crudwizard-resource-no-results {
        @apply text-left;
    }

    /* Form */
    .crudwizard-invalid-input {
        @apply border-2 border-red-600;
    }
    .crudwizard-invalid {
        @apply text-red-600 text-sm;
    }
    .crudwizard-form-container {
        @apply border p-5 w-full sm:w-8/12 md:w-7/12 lg:w-5/12;
    }
    .crudwizard-form {
        @apply grid grid-cols-1 gap-4;
    }
    .crudwizard-form-fieldset {
        @apply grid grid-cols-1 gap-2;
    }
    .crudwizard-form-text-input {
        @apply border py-1 px-2;
    }

    /* Buttons */
    .crudwizard-button {
        @apply text-white px-2 py-2 rounded text-sm uppercase flex justify-center items-center gap-2;
    }
    .crudwizard-back-button {
        @apply crudwizard-button bg-gray-100 hover:bg-gray-200 text-gray-800;
    }
    .crudwizard-save-button {
        @apply crudwizard-button bg-green-800 hover:bg-green-900;
    }
    .crudwizard-add-new-button {
        @apply crudwizard-button bg-blue-800 hover:bg-blue-900;
    }
    .crudwizard-show-button {
        @apply crudwizard-button bg-purple-800 hover:bg-purple-900 text-xs;
    } 
    .crudwizard-edit-button {
        @apply crudwizard-button bg-yellow-800 hover:bg-yellow-900 text-xs;
    }
    .crudwizard-delete-button {
        @apply crudwizard-button bg-red-800 hover:bg-red-900 text-xs;
    }
    .crudwizard-modal-delete-yes-button {
        @apply crudwizard-delete-button mt-5 min-w-[100px];
    }
    .crudwizard-modal-delete-cancel-button {
        @apply crudwizard-button bg-gray-500 mt-5 min-w-[100px];
    }
    
    /* Modal */
    .crudwizard-modal-container {
        @apply fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 z-50;
    }
    .crudwizard-modal-subcontainer {
        @apply bg-white rounded-lg p-6 shadow-xl grid grid-cols-1 gap-2;
    }
    .crudwizard-heading {
        @apply text-lg font-bold;
    }
    .crudwizard-button-container {
        @apply flex justify-between;
    }
  }

(7) 确保您已运行您的Laravel本地服务器。

php artisan serve

(8) 在另一个终端中运行以下命令以编译和构建您的前端资源。

npm run dev

(9) 您还可以探索其他命令。

php artisan crudwizard --help

测试

默认情况下,生成CRUD将创建一个测试文件。您需要执行以下两件事才能进行测试。

(1) 将以下代码添加到您的Laravel应用程序的config/database.php文件中的connections键下。

'testing' => [
    'driver' => 'mysql',
    'host' => env('DB_TEST_HOST', '127.0.0.1'),
    'port' => env('DB_TEST_PORT', '3306'),
    'database' => env('DB_TEST_DATABASE', 'test_database'),
    'username' => env('DB_TEST_USERNAME', 'root'),
    'password' => env('DB_TEST_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

(2) 在您的Laravel应用程序根目录下,您将看到phpunit.xml文件。将以下代码添加到"php"标签内。

<env name="DB_CONNECTION" value="testing"/>
<env name="DB_TEST_HOST" value="127.0.0.1"/>
<env name="DB_TEST_PORT" value="3306"/>
<env name="DB_TEST_DATABASE" value="test_database"/>
<env name="DB_TEST_USERNAME" value="root"/>
<env name="DB_TEST_PASSWORD" value=""/>

这将允许您为测试使用一个新的数据库。通常,不推荐使用实时数据库的配置。相反,使用单独的数据库进行测试。

(3) 将以下内容添加到您的Laravel应用程序根目录下的.env文件中。

DB_TEST_HOST=127.0.0.1
DB_TEST_PORT=3306
DB_TEST_DATABASE=core_test_database
DB_TEST_USERNAME=root
DB_TEST_PASSWORD=

变更日志

有关更改详情,请参阅CHANGELOG文件。

安全

如果您发现任何安全相关的问题,请通过电子邮件sentgine@gmail.com报告,而不是使用问题跟踪器。

致谢

Crudwizard由Adrian Alconera构建和维护。访问我的YOUTUBE频道!

许可证

麻省理工学院许可证(MIT)。请参阅许可证文件以获取更多信息。