ahmed-aliraqi/crud-generator

此包是用于为 laravel-modules/scaffolding 生成简单 CRUD 的实用工具

v4.1.0 2023-03-03 21:29 UTC

This package is auto-updated.

Last update: 2024-08-30 01:43:51 UTC


README

简介

此包是用于为 laravel-modules/scaffolding 生成简单 CRUD 的实用工具

将要生成的文件包括

  • 语言文件(ar & en)
  • 面包屑文件
  • 视图文件
  • API 资源文件
  • 迁移文件
  • 工厂文件
  • 策略文件
  • 控制器文件
  • 模型文件
  • 请求文件
  • 过滤器文件
  • 测试文件

安装

composer require ahmed-aliraqi/crud-generator --dev

配置

您应使用以下命令添加配置文件以配置支持的资源。

php artisan vendor:publish --provider="AhmedAliraqi\CrudGenerator\CrudServiceProvider"

然后在 routes/dashboard.phproutes/api.php 文件中添加以下注释行

/*  The routes of generated crud will set here: Don't remove this line  */

并在 resources/views/layouts/sidebar.blade.php 文件中添加以下注释行

{{-- The sidebar of generated crud will set here: Don't remove this line --}}

用法

例如,如果您想生成一个名为 category 的新 CRUD,请确保它的阿拉伯语单词已定义在配置文件中的 arabicWords 中,然后使用以下 artisan 命令

php artisan make:crud category

如果 CRUD 可翻译,请使用 translatable 选项

php artisan make:crud category --translatable

如果 CRUD 有媒体,请使用 has-media 选项

php artisan make:crud category --has-media

您还可以同时使用这两个选项来生成可翻译且带有媒体的 CRUD。

php artisan make:crud category --translatable --has-media

账户类型克隆器

php artisan account:clone customer merchant

此命令将 customer 账户类型克隆到名为 merchant 的另一个类型中

一些文件需要手动修改,例如

  • app/Models/User.php 中添加新类型的常量
/**
 * The code of merchant type.
 *
 * @var string
 */
const MERCHANT_TYPE = 'merchant';

然后在 childTypes 数组中注册该类型

/**
 * @var array
 */
protected $childTypes = [
    // other types ...
    self::MERCHANT_TYPE => Merchant::class,
];
  • app/Models/Helpers/UserHelper.php 中添加类型辅助函数的检查
/**
 * Determine whether the user type is merchant.
 *
 * @return bool
 */
public function isMerchant()
{
    return $this->type == User::MERCHANT_TYPE;
}
  • database/seeders/UserSeeder.php 中添加种子文件
Merchant::factory()->count(10)->create();
  • 将翻译语言文件名添加到 config/lang-generator.php
    'lang' => [
        // ...
        'merchants' => base_path('lang/{lang}/merchants.php'),
        /*  The lang of generated crud will set here: Don't remove this line  */
    ],
  • 更新生成的类型 lang/ar/merchants.php 中的阿拉伯语翻译
  • 将类型翻译键添加到 lang/{lang}/users.php
'types' => [
    // Other types ...
    'merchant' => 'Merchant',
],
  • customer 目录克隆仪表板中的视图文件到 merchant 并将所有 customer 单词替换为 merchant
    • Customer => Merchant
    • customers => merchants
    • customer => merchant
  • resources/views/dashboard/accounts/sidebar.blade.php 中添加侧边栏链接
[
    'name' => trans('merchants.plural'),
    'url' => route('dashboard.merchants.index'),
    'can' => ['ability' => 'viewAny', 'model' => \App\Models\Merchant::class],
    'active' => request()->routeIs('*merchants*'),
], 
  • routes/dashboard.php 文件中添加新类型的路由
// Merchants Routes.
Route::get('trashed/merchants', 'MerchantController@trashed')->name('merchants.trashed');
Route::get('trashed/merchants/{trashed_merchant}', 'MerchantController@showTrashed')->name('merchants.trashed.show');
Route::post('merchants/{trashed_merchant}/restore', 'MerchantController@restore')->name('merchants.restore');
Route::delete('merchants/{trashed_merchant}/forceDelete', 'MerchantController@forceDelete')->name('merchants.forceDelete');
Route::resource('merchants', 'MerchantController');
  • storage/soft_deletes_route_binding.json 中添加路由绑定
{
 "trashed_merchant": "App\\Models\\Merchant"
}
  • storage/permissions.json 中添加权限
[
    "manage.merchants"
]
  • actingAsMerchant 辅助函数添加到 tests/TestCase.php
  /**
   * Set the currently logged in merchant for the application.
   *
   * @param null $driver
   * @return \App\Models\Merchant
   */
  public function actingAsMerchant($driver = null)
  {
      $merchant = Merchant::factory()->create();

      $this->be($merchant, $driver);

      return $merchant;
  }