luthfi/simple-crud-generator

一个为 Laravel 5.5 (及以后版本) 和 Bootstrap 4 设计的简单 CRUD 生成器。

4.1.0 2023-10-17 14:08 UTC

README

Build Status Total Downloads

在 Laravel 项目中需要更快的 TDD?这是一个包含自动化测试套件的简单 CRUD 生成器。

文档

有关安装说明和用法,请参阅 官方文档

关于此包

此包包含 artisan make:crud 命令,用于在我们的 Laravel 5.5 (及以后) 应用程序中创建简单的 CRUD 功能和测试类。此包相对简单,旨在为我们的 laravel 应用程序 提升测试驱动开发方法

在本地环境中安装此包后,我们可以使用(例如)php artisan make:crud Vehicle 命令生成一些文件。

  • App\Models\Vehicle.php eloquent 模型
  • xxx_create_vehicles_table.php 迁移文件
  • VehicleController.php
  • index.blade.phpforms.blade.php 视图文件在 resources/views/vehicles 目录下
  • resources/lang/vehicle.php lang 文件
  • VehicleFactory.php 模型工厂文件
  • VehiclePolicy.php 模型策略文件在 app/Policies 目录下
  • ManageVehiclesTest.php 功能测试类在 tests/Feature 目录下
  • VehicleTest.php 单元测试类在 tests/Unit/Models 目录下
  • VehiclePolicyTest.php 单元测试类在 tests/Unit/Policies 目录下

它将更新一些文件

  • 更新 routes/web.php 以添加 vehicles 资源路由
  • 更新 app/providers/AuthServiceProvider.php 以在 $policies 属性中添加 Vehicle 模型策略类

如果不存在,它还将创建以下文件

  • 如果不存在,则创建 resources/lang/app.php lang 文件
  • 如果不存在,则创建 tests/BrowserKitTest.php 基础功能测试用例类

主要目的

此包的主要目的是为了 加快测试驱动开发,它生成带有测试类的完整模型 CRUD 框架,这些测试类将使用 Laravel Browserkit Testing 包和 PHPUnit


如何安装

对于 Laravel 10x

# Get the package
$ composer require luthfi/simple-crud-generator:^4.0 --dev

对于 Laravel 9.x

# Get the package
$ composer require luthfi/simple-crud-generator:^3.0 --dev

对于 Laravel 8.x

# Get the package
$ composer require luthfi/simple-crud-generator:^2.0 --dev

对于 Laravel 5.6 到 7.x

# Get the package
$ composer require luthfi/simple-crud-generator:^1.0 --dev

对于 Laravel 5.5

要在 Laravel 5.5 上使用此包,我们需要在 composer.json 文件的 require-dev 中添加包(带有 browserkit),如下所示

# Install required package for laravel/browser-kit-testing
$ composer require symfony/css-selector:^3.0

# Get the package
$ composer require luthfi/simple-crud-generator 1.2.* --dev

该包将被 自动发现


如何使用

只需在终端中键入 $ php artisan make:crud ModelName 命令,它将创建给定 模型名称 的简单 Laravel CRUD 文件,并附带测试。

例如,我们想为 'App\Models\Vehicle' 模型创建 CRUD。

$ php artisan make:crud-simple Vehicle

Vehicle resource route generated on routes/web.php.
Vehicle model generated.
Vehicle table migration generated.
VehicleController generated.
Vehicle index view file generated.
Vehicle form view file generated.
lang/app.php generated.
vehicle lang files generated.
Vehicle model factory generated.
Vehicle model policy generated.
AuthServiceProvider class has been updated.
BrowserKitTest generated.
ManageVehiclesTest generated.
VehicleTest (model) generated.
VehiclePolicyTest (model policy) generated.
CRUD files generated successfully!

确保我们在 .env 文件中设置了 数据库凭证,然后

$ php artisan migrate
$ php artisan serve

然后访问我们的应用程序 URL: https://:8000/vehicles


Laravel 8.x 新安装时的使用

在此示例中,我们使用 laravel installer 包安装新的 Laravel 项目。

# This is example commands for Ubuntu users.
$ laravel new project-directory
$ cd project-directory
$ composer require laravel/ui
$ php artisan ui bootstrap --auth
$ npm install && npm run dev # Might need to run twice, minimum requirement: NodeJS v12.x
$ vim .env # Edit your .env file to update database configuration

# Install the package
$ composer require luthfi/simple-crud-generator:^2.0

# I really suggest "git commit" your project right before you run the make:crud command
$ php artisan make:crud Vehicle # Model name in singular

$ php artisan migrate
$ php artisan serve
# Visit your route http://127.0.0.1:8000
# Register as a new user
# Visit your route http://127.0.0.1:8000/vehicles

# Run the unit tests
$ vim phpunit.xml # Remove comments on the DB_CONNECTION and DB_DATABASE lines
$ vendor/bin/phpunit

可用命令

# Create Full CRUD feature with tests
$ php artisan make:crud ModelName

# Create Full CRUD feature with tests and Bootstrap 3 views
$ php artisan make:crud ModelName --bs3

# Create Simple CRUD feature with tests
$ php artisan make:crud-simple ModelName

# Create Simple CRUD feature with tests and Bootstrap 3 views
$ php artisan make:crud-simple ModelName --bs3

# Create API CRUD feature with tests
$ php artisan make:crud-api ModelName

模型属性/列

模型和表将仅包含2个预定义的属性或列:标题描述,每个生成的模型和数据库表都包含这些。您可以继续在表的其它列上工作。


Bootstrap 4 视图

生成的视图文件默认使用Bootstrap 4(适用于Laravel 5.6及以后版本)。


Bootstrap 3 视图

我们也可以使用--bs3命令选项生成使用Bootstrap 3的视图,例如Laravel版本5.5。


对于API

如果我们想要生成具有功能测试的API控制器,我们使用以下命令

$ php artisan make:crud-api Vehicle

默认情况下,我们使用基于Token的认证,因此我们需要更新我们的用户模型。

  1. users_table_migration上添加api_token
  2. User模型上添加api_token作为fillable属性。
  3. UserFactory上添加api_token 字段

API 使用

生成的API是一个REST API,使用GET和POST动词,URI为/api/modelname

使用Guzzle调用生成的API的示例代码

// Read data a specific Vehicle record...
$uri = 'http://your-domain.com/api/vehicles/'.$vehicleID;
$headers = ['Authorization' => 'Bearer '.$apiToken];

$client = new \GuzzleHttp\Client();
$res = $client->request('GET', $uri, ['headers' => $headers]);

// Create a new Vehicle record...
$uri = 'http://your-domain.com/api/vehicles';
$headers = ['Authorization' => 'Bearer '.$apiToken];
$payload = json_encode([
    'title' => 'Vehicle Name 1',
    'description' => 'Vehicle Description 1',
]);

$client = new \GuzzleHttp\Client();
$res = $client->request('POST', $uri, ['body' => $payload, 'headers' => $headers]);

生成的功能测试将给出如何适应其他调用类型的示例。


配置文件

您可以通过发布配置文件来自定义配置

$ php artisan vendor:publish --provider="Luthfi\CrudGenerator\ServiceProvider" --tag=config

这将生成config/simple-crud.php文件。

默认情况下,此包有一些配置

<?php

return [
    // The master view layout that generated views will extends
    'default_layout_view' => 'layouts.app',

    // The base test case class path for generated testing classes
    'base_test_path' => 'tests/BrowserKitTest.php',

    // The base test class full name
    'base_test_class' => 'Tests\BrowserKitTest',
];

发布占位符文件

占位符文件是我们用于为每个模型类和文件生成代码的模板。我们可以通过将它们发布到我们的项目目录中来按需自定义占位符文件。

$ php artisan vendor:publish --provider="Luthfi\CrudGenerator\ServiceProvider" --tag=stubs

这将生成位于stubs/simple-crud目录上的占位符文件。现在我们可以根据项目需求更改一些占位符文件。


注意

  • 包将创建Model类文件,如果Model已经存在,则命令将停止。
  • 您需要一个resources/views/layouts/app.blade.php视图文件,只需使用php artisan make:auth命令创建一个即可。您可以通过config/simple-crud.php文件更改此配置。

截图

访问新资源路由中的应用程序:http://127.0.0.1:8000/vehicles

Generated CRUD page by Simple CRUD Generator


生成的测试套件

接下来,让我们尝试生成的测试套件。要使用生成的测试类,我们可以使用内存数据库SQLite设置数据库环境。打开phpunit.xml。在env下添加两行。

<phpunit>
    <!-- ..... -->
    <php>
        <!-- ..... -->
        <server name="DB_CONNECTION" value="sqlite"/>
        <server name="DB_DATABASE" value=":memory:"/>
    </php>
</phpunit>

然后运行PHPUnit

$ vendor/bin/phpunit

所有测试都应通过。

Generated Testing Suite on Simple CRUD Generator


问题/建议

如果您发现任何问题,或想要提出一些想法来帮助改进此包,请在此GitHub仓库中创建一个问题


许可证

此包是开源软件,根据MIT许可证授权。