PHP code example of laravel-modules / module-generator

1. Go to this page and download the library: Download laravel-modules/module-generator library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

laravel-modules / module-generator example snippets


$generator = new \LaravelModules\ModuleGenerator\Generator;

$generator->publish(__DIR__.'/../stubs');

$generator->publish(
    from: __DIR__.'/../stubs',
    to: base_path('app')
);

$crudReplacement = [
    'Cruds' => 'Categories',
    'cruds' => 'categories',
    'Crud' => 'Category',
    'crud' => 'category',
];

$generator->publish(
    from: __DIR__.'/../stubs',
    to: base_path('app'),
    filesNameReplacement: $crudReplacement,
    filesContentReplacement: $crudReplacement,
);

$generator->registerServiceProvider('App\Providers\UsersServiceProvider');

$generator->composer()
    ->removePackages([
        'laravel/breeze',
    ])
    ->mergeRequire([
        'creativeorange/gravatar' => '~1.0.20',
        'laravel/socialite' => '^5.6',
        'laravel/ui' => '^3.2.0',
        'rollbar/rollbar-laravel' => '^7.0',
        'spatie/laravel-medialibrary' => '^10.0.0',
        'spatie/laravel-permission' => '^5.0',
        'yajra/laravel-datatables' => '^1.5',
        'yajra/laravel-datatables-oracle' => '^9.0',
        'ylsideas/feature-flags' => '^2.0',
    ])
    ->mergeRequireDev([
        'barryvdh/laravel-ide-helper' => '^2.13',
    ])
    ->removeScripts(['post-create-project-cmd'])
    ->mergeScripts([
        'auto-complete:generate' => [
            '@php artisan ide-helper:meta --ansi --quiet',
            '@php artisan ide-helper:generate --ansi --quiet',
            '@php artisan ide-helper:models --nowrite --quiet',
        ],
    ])
    ->publish();

$generator->composer()
    ->mergeAutoloadFiles([
        'app/Support/helpers.php',
    ])
    ->publish();

$generator->composer()
    ->dontDiscover([
        'rollbar/rollbar-laravel',
    ])
    ->publish();

$generator->environment()
    ->set('APP_NAME', 'Starter Kit')
    ->set('ROLLBAR_TOKEN', "123")
    ->append("FOO=bar")
    ->prepend("FIRST_KEY=first")
    ->appendAfter('APP_URL=', "APP_FRONTEND_URL=https://example.com")
    ->prependBefore('APP_NAME=', "SECOND_KEY=second")
    ->publish();

$generator
    ->file(path: resource_path('views/dashboard/sidebar.blade.php'))
    ->append("@d.settings.partials.sidebar')")
    ->appendAfter(
        search: "@      content: "@


// database/seeders/SettingsSeeder.php
namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Laraeast\LaravelSettings\Facades\Settings;

class SettingsSeeder extends Seeder
{
    /**
     * Seed the application's database.
     */
    public function run(): void
    {
        Settings::set('name:en', '{{APP_NAME_EN}}');
        Settings::set('name:ar', '{{APP_NAME_AR}}');
    }
}

$generator->file(base_path('database/seeders/SettingsSeeder.php'))
    ->replace(search: '{{APP_NAME_EN}}', replace: $nameEn)
    ->replace(search: '{{APP_NAME_AR}}', replace: $nameAr)
    ->publish()



namespace App\Console\Commands;

use Illuminate\Console\Command;
use LaravelModules\ModuleGenerator\Generator;
use function Laravel\Prompts\text;

class MakeCrudCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'make:crud {name?}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Generate a new CRUD';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $name = $this->argument('name') ?? text('What is the CRUD name?');

        $generator = new Generator;

        $generator
            ->crud(name: $name)
            ->fromPath(base_path('stubs/crud'))
            ->toPath(base_path())
            ->appendToFile(
                file: resource_path('js/components/SidebarItems.vue'),
                content: file_get_contents(base_path('stubs/sidebar.stub')),
                before: '    </ul>',
            )
            ->publish();

        $this->info('CRUD  has been generated successfully.');
    }
}

stubs/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── Api/
│   │   │       └── Users/
│   │   │           ├── ProfileController.php
│   │   │           └── UserController.php
│   │   ├── Requests/
│   │   │   └── Users/
│   │   │       └── UserRequest.php
│   │   └── Resources/
│   │       └── Users/
│   │           └── UserResource.php
│   └── Providers/
│       └── UsersServiceProvider.php
└── routes/
    └── api/
        └── users.php

stubs/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── Api/
│   │   │       └── Crud/
│   │   │           └── CrudController.php
│   │   ├── Requests/
│   │   │   └── Cruds/
│   │   │       └── CrudRequest.php
│   │   └── Resources/
│   │       └── Cruds/
│   │           └── CrudResource.php
│   └── Providers/
│       └── CrudsServiceProvider.php
└── routes/
    └── api/
        └── cruds.php

stubs/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── Api/
│   │   │       └── CategoryController.php
│   │   ├── Requests/
│   │   │   └── CategoryRequest.php
│   │   └── Resources/
│   │       └── CategoryResource.php
│   └── Providers/
│       └── CategoriesServiceProvider.php
└── routes/
    └── api/
        └── categories.php

stubs/
├── sidebar.stub
└── crud/
    ├── app/
    │   ├── Http/
    │   │   ├── Controllers/
    │   │   │   └── Api/
    │   │   │       └── __CRUD_STUDLY_SINGULAR__Controller.php.stub     // e.g., UserCategoryController.php
    │   │   ├── Requests/
    │   │   │   └── __CRUD_STUDLY_SINGULAR__Request.php.stub            // e.g., UserCategoryRequest.php
    │   │   └── Resources/
    │   │       └── __CRUD_STUDLY_SINGULAR__Resource.php.stub           // e.g., UserCategoryResource.php
    │   └── Providers/
    │       └── __CRUD_STUDLY_PLURAL__ServiceProvider.php.stub          // e.g., UserCategoriesServiceProvider.php
    ├── lang/
    │   └── __CRUD_KEBAB_PLURAL__.php.stub                              // e.g., user-categories.php
    └── routes/
        └── api/
            └── __CRUD_KEBAB_PLURAL__.php.stub                          // e.g., user-categories.php
shell
php artisan make:crud UserCategory