PHP code example of rayhan2001 / module-generator

1. Go to this page and download the library: Download rayhan2001/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/ */

    

rayhan2001 / module-generator example snippets


// Module: Category
use App\Http\Controllers\CategoryController;

Route::controller(CategoryController::class)
    ->prefix('categories')
    ->as('categories.')
    ->group(function () {
        Route::get('/', 'index')->name('index');
        Route::get('/create', 'create')->name('create');
        Route::post('/store', 'store')->name('store');
        Route::get('/edit/{id}', 'edit')->name('edit');
        Route::put('/update/{id}', 'update')->name('update');
        Route::delete('/delete/{id}', 'destroy')->name('destroy');
    });

// Module: Category
use App\Http\Controllers\CategoryController;

Route::controller(CategoryController::class)
    ->prefix('categories')
    ->as('categories.')
    ->group(function () {
        Route::get('/', 'index')->name('index');
        Route::post('/store', 'store')->name('store');
        Route::get('/{id}', 'show')->name('show');
        Route::put('/update/{id}', 'update')->name('update');
        Route::delete('/delete/{id}', 'destroy')->name('destroy');
    });



namespace App\Http\Controllers;

use App\Repositories\ProductRepository;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function __construct(
        protected ProductRepository $repository
    ) {}

    public function index(Request $request)
    {
        return response()->json($this->repository->paginateData($request));
    }

    public function store(Request $request)
    {
        $item = $this->repository->store($request->all());
        return response()->json($item, 201);
    }

    public function show($id)
    {
        return response()->json($this->repository->find($id));
    }

    public function update(Request $request, $id)
    {
        $item = $this->repository->update($id, $request->all());
        return response()->json($item);
    }

    public function destroy($id)
    {
        $this->repository->delete($id);
        return response()->json(['message' => 'Deleted']);
    }
}



namespace App\Http\Controllers;

use App\Http\Requests\CategoryRequest;
use App\Repositories\CategoryRepository;
use Illuminate\Http\Request;

class CategoryController extends Controller
{
    public function __construct(
        protected CategoryRepository $repository
    ) {}

    public function index(Request $request)
    {
        $data['title'] = 'All ' . \Illuminate\Support\Str::plural('Category');
        $data['collection'] = $this->repository->paginateData($request);
        return view('categories.index')->with($data);
    }

    public function create()
    {
        $data['title'] = 'Create Category';
        return view('categories.create')->with($data);
    }

    public function store(CategoryRequest $request)
    {
        $this->repository->store($request->validated());
        return redirect()->route('categories.index')->with('success', 'Created successfully');
    }

    public function edit($id)
    {
        $data['title'] = 'Edit Category';
        $data['item'] = $this->repository->find($id);
        return view('categories.edit')->with($data);
    }

    public function update(CategoryRequest $request, $id)
    {
        $this->repository->update($id, $request->validated());
        return redirect()->route('categories.index')->with('success', 'Updated successfully');
    }

    public function destroy($id)
    {
        $this->repository->delete($id);
        return redirect()->route('categories.index')->with('success', 'Deleted successfully');
    }
}



return [
    /*
    |--------------------------------------------------------------------------
    | Default Module Type
    |--------------------------------------------------------------------------
    |
    | This option controls the default module type when no --type flag
    | is provided. You can set this to 'api' or 'web'.
    |
    */

    'default_type' => 'api',
];

// database/migrations/YYYY_MM_DD_HHMMSS_create_products_table.php
public function up(): void
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description')->nullable();
        $table->decimal('price', 10, 2);
        $table->boolean('is_active')->default(true);
        $table->timestamps();
    });
}
bash
php artisan module:install

app/
├── Models/Category.php
├── Repositories/CategoryRepository.php
├── Http/Controllers/CategoryController.php
└── Http/Requests/
    ├── CategoryRequest.php
    └── UpdateCategoryRequest.php

database/migrations/
└── YYYY_MM_DD_HHMMSS_create_categories_table.php

routes/
└── web.php OR api.php (routes appended)

resources/views/categories/ (only for web type)
├── index.blade.php
├── create.blade.php
├── edit.blade.php
└── form.blade.php