uttam-official/laravel-panel-generator 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

uttam-official/laravel-panel-generator

Composer 安装命令:

composer require uttam-official/laravel-panel-generator

包简介

Generate Laravel panel structures such as admin, vendor, seller, customer, and staff panels.

README 文档

README

Composer package:

uttam-official/laravel-panel-generator

Main command:

php artisan panel:generate admin
php artisan panel:generate vendor
php artisan panel:generate --name=vendor

This package generates Laravel panels such as admin, vendor, seller, staff, or customer from reusable template files.

What it generates

For:

php artisan panel:generate admin --register-route --update-vite

it creates:

resources/views/admin/
resources/js/admin/
resources/css/admin/
routes/admin.php
app/Http/Controllers/Admin/
app/Http/Requests/Admin/
app/Http/Middleware/Admin/
app/Trait/

For:

php artisan panel:generate vendor --register-route --update-vite

it creates:

resources/views/vendor/
resources/js/vendor/
resources/css/vendor/
routes/vendor.php
app/Http/Controllers/Vendor/
app/Http/Requests/Vendor/
app/Http/Middleware/Vendor/
app/Trait/

app/Trait is common for the whole Laravel application. It is not generated inside Admin, Vendor, or any other panel folder.

Local installation inside a Laravel project

Paste this package folder here:

your-laravel-project/packages/UttamOfficial/LaravelPanelGenerator

The package composer file should be here:

your-laravel-project/packages/UttamOfficial/LaravelPanelGenerator/composer.json

Then run these commands from your Laravel project root:

composer config repositories.laravel-panel-generator path packages/UttamOfficial/LaravelPanelGenerator
composer require uttam-official/laravel-panel-generator:@dev
php artisan optimize:clear

After editing package files during local development, run:

composer dump-autoload
php artisan optimize:clear

If Composer copied instead of symlinked the package, run:

composer update uttam-official/laravel-panel-generator -W
php artisan optimize:clear

Check the command:

php artisan list panel

Generate panels

Generate admin:

php artisan panel:generate admin --register-route --update-vite

Generate vendor:

php artisan panel:generate vendor --register-route --update-vite

Generate with auth middleware:

php artisan panel:generate admin --middleware=web,auth --register-route --update-vite

Overwrite existing generated files:

php artisan panel:generate admin --force --register-route --update-vite

After package.json changes, run:

npm install
npm run dev

or:

npm run build

Where to paste your panel template files

Inside the package, use this folder:

packages/UttamOfficial/LaravelPanelGenerator/resources/panels/

Default template for all panels

Paste common panel template files here:

resources/panels/default/
  views/
  js/
  css/
  controllers/
  requests/
  middleware/
  routes/
  package.json

If you run panel:generate admin and no resources/panels/admin folder exists, the command uses resources/panels/default.

Panel-specific template

For admin-specific files, paste here:

resources/panels/admin/
  views/
  js/
  css/
  controllers/
  requests/
  middleware/
  routes/
  package.json

For vendor-specific files, paste here:

resources/panels/vendor/
  views/
  js/
  css/
  controllers/
  requests/
  middleware/
  routes/
  package.json

The command checks the panel-specific folder first. If it does not exist, it uses the default template.

Common system files

Files that should be common for the full Laravel app should go here:

resources/common/

For traits, paste here:

resources/common/trait/

Example:

resources/common/trait/Validation/FailedValidationTrait.php
resources/common/trait/Model/UuidTrait.php

They are copied to:

app/Trait/Validation/FailedValidationTrait.php
app/Trait/Model/UuidTrait.php

They are not copied to:

app/Trait/Admin/
app/Trait/Vendor/

The default trait namespace is:

App\Trait

If you prefer Laravel-style plural App\Traits, change config/panel-generator.php:

'paths' => [
    'traits' => app_path('Traits'),
],

'namespaces' => [
    'traits' => 'App\\Traits',
],

Where files go after generation

For admin:

resources/panels/admin/views/*       -> resources/views/admin/*
resources/panels/admin/js/*          -> resources/js/admin/*
resources/panels/admin/css/*         -> resources/css/admin/*
resources/panels/admin/controllers/* -> app/Http/Controllers/Admin/*
resources/panels/admin/requests/*    -> app/Http/Requests/Admin/*
resources/panels/admin/middleware/*  -> app/Http/Middleware/Admin/*
resources/panels/admin/routes/*      -> routes/admin.php
resources/common/trait/*             -> app/Trait/*

For vendor:

resources/panels/vendor/views/*       -> resources/views/vendor/*
resources/panels/vendor/js/*          -> resources/js/vendor/*
resources/panels/vendor/css/*         -> resources/css/vendor/*
resources/panels/vendor/controllers/* -> app/Http/Controllers/Vendor/*
resources/panels/vendor/requests/*    -> app/Http/Requests/Vendor/*
resources/panels/vendor/middleware/*  -> app/Http/Middleware/Vendor/*
resources/panels/vendor/routes/*      -> routes/vendor.php
resources/common/trait/*              -> app/Trait/*

If using the default template:

resources/panels/default/views/*       -> resources/views/{panel}/*
resources/panels/default/js/*          -> resources/js/{panel}/*
resources/panels/default/css/*         -> resources/css/{panel}/*
resources/panels/default/controllers/* -> app/Http/Controllers/{Panel}/*
resources/panels/default/requests/*    -> app/Http/Requests/{Panel}/*
resources/panels/default/middleware/*  -> app/Http/Middleware/{Panel}/*
resources/panels/default/routes/*      -> routes/{panel}.php
resources/common/trait/*               -> app/Trait/*

Important template tokens

Use tokens in view/controller/request/route/middleware files so the same files can generate admin, vendor, seller, etc.

Blade views

Use:

@extends('___PANEL_VIEW_NAMESPACE___.layouts.app')
@include('___PANEL_VIEW_NAMESPACE___.layouts.partials.sidebar')
@vite(['___PANEL_CSS_PATH___/app.css', '___PANEL_JS_PATH___/app.js'])
{{ route('___PANEL_ROUTE_NAME___dashboard') }}
{{ route('___PANEL_ROUTE_NAME___auth.login') }}

For admin, these become:

@extends('admin.layouts.app')
@include('admin.layouts.partials.sidebar')
@vite(['resources/css/admin/app.css', 'resources/js/admin/app.js'])
{{ route('admin.dashboard') }}
{{ route('admin.auth.login') }}

Controllers

Use:

namespace ___PANEL_CONTROLLER_NAMESPACE___;

use ___PANEL_REQUEST_NAMESPACE___\Auth\LoginRequest;

return view('___PANEL_VIEW_NAMESPACE___.dashboard');
return redirect(route('___PANEL_ROUTE_NAME___auth.login'));

For admin, this becomes:

namespace App\Http\Controllers\Admin;

use App\Http\Requests\Admin\Auth\LoginRequest;

return view('admin.dashboard');
return redirect(route('admin.auth.login'));

Requests

Paste request templates here:

resources/panels/default/requests/Auth/LoginRequest.php

Use:

namespace ___PANEL_REQUEST_NAMESPACE___\Auth;

use ___COMMON_TRAIT_NAMESPACE___\Validation\FailedValidationTrait;

For admin, this becomes:

namespace App\Http\Requests\Admin\Auth;

use App\Trait\Validation\FailedValidationTrait;

Middleware

Paste middleware templates here:

resources/panels/default/middleware/___PANEL_CLASS___Middleware.php

Use:

namespace ___PANEL_MIDDLEWARE_NAMESPACE___;

class ___PANEL_MIDDLEWARE_CLASS___
{
    // ...
}

For admin, this generates:

app/Http/Middleware/Admin/AdminMiddleware.php

For vendor, this generates:

app/Http/Middleware/Vendor/VendorMiddleware.php

Routes

Paste route templates here:

resources/panels/default/routes/___PANEL_SLUG___.php

Use:

use ___PANEL_CONTROLLER_NAMESPACE___\AuthController;
use ___PANEL_CONTROLLER_NAMESPACE___\DashboardController;
use Illuminate\Support\Facades\Route;

Route::middleware([___PANEL_ROUTE_MIDDLEWARE_ARRAY___])
    ->prefix('___PANEL_ROUTE_PREFIX___')
    ->as('___PANEL_ROUTE_NAME___')
    ->group(function () {
        Route::controller(AuthController::class)->as('auth.')->group(function () {
            Route::get('login', 'login')->name('login');
        });

        Route::controller(DashboardController::class)->group(function () {
            Route::get('/', 'index')->name('dashboard');
        });
    });

For admin, this becomes routes/admin.php with prefix admin and route names like admin.dashboard.

package.json dependency merge

Paste frontend npm packages into the template package file:

resources/panels/default/package.json
resources/panels/admin/package.json
resources/panels/vendor/package.json

Example:

{
    "dependencies": {
        "@popperjs/core": "^2.11.8",
        "bootstrap": "^5.3.3",
        "jquery": "^3.7.1"
    },
    "devDependencies": {
        "sass": "^1.77.0"
    },
    "scripts": {}
}

When you run:

php artisan panel:generate admin

the command checks the Laravel project's root package.json and adds only missing packages. If a package already exists in dependencies, devDependencies, peerDependencies, or optionalDependencies, it is skipped.

After generation, run:

npm install

Vite entries

The default layout uses Vite:

@vite(['___PANEL_CSS_PATH___/app.css', '___PANEL_JS_PATH___/app.js'])

For admin, this becomes:

@vite(['resources/css/admin/app.css', 'resources/js/admin/app.js'])

For vendor, this becomes:

@vite(['resources/css/vendor/app.css', 'resources/js/vendor/app.js'])

Use this option to try adding entries to vite.config.js automatically:

php artisan panel:generate admin --update-vite

If your Vite config is custom, add entries manually:

laravel({
    input: [
        'resources/css/app.css',
        'resources/js/app.js',
        'resources/css/admin/app.css',
        'resources/js/admin/app.js',
    ],
    refresh: true,
})

Then run:

npm run dev

or:

npm run build

Publish editable templates into the Laravel app

Instead of editing the package directly, you can publish templates:

php artisan vendor:publish --tag=panel-generator-panels
php artisan vendor:publish --tag=panel-generator-common

Then paste custom files here:

resources/vendor/panel-generator/panels/default/
resources/vendor/panel-generator/panels/admin/
resources/vendor/panel-generator/panels/vendor/
resources/vendor/panel-generator/common/trait/

The command checks the published template path first. If a matching panel template exists there, it uses that. Otherwise, it uses the package template.

Options

php artisan panel:generate admin
php artisan panel:generate admin --force
php artisan panel:generate admin --register-route
php artisan panel:generate admin --middleware=web,auth
php artisan panel:generate admin --template=default
php artisan panel:generate admin --update-vite
php artisan panel:generate admin --skip-views
php artisan panel:generate admin --skip-js
php artisan panel:generate admin --skip-css
php artisan panel:generate admin --skip-assets
php artisan panel:generate admin --skip-controllers
php artisan panel:generate admin --skip-requests
php artisan panel:generate admin --skip-middleware
php artisan panel:generate admin --skip-traits
php artisan panel:generate admin --skip-routes
php artisan panel:generate admin --skip-package-json

Generate CRUD modules for a panel

Use this command when the panel already exists, or when you want the command to create/update the panel route file automatically:

php artisan panel:make-module User --panel=admin
php artisan panel:make-module Product --panel=vendor

With custom fields:

php artisan panel:make-module User --panel=admin --fields="name:string,email:string,password:string,status:boolean"
php artisan panel:make-module Product --panel=admin --fields="name:string,description:text:nullable,price:decimal,status:boolean"

For User in the admin panel, the command creates files only when they do not already exist:

app/Models/User.php
app/Http/Controllers/Admin/UserController.php
app/Http/Requests/Admin/User/StoreUserRequest.php
app/Http/Requests/Admin/User/UpdateUserRequest.php
database/migrations/YYYY_MM_DD_HHMMSS_create_users_table.php
resources/views/admin/users/index.blade.php
resources/views/admin/users/create.blade.php
resources/views/admin/users/edit.blade.php
resources/views/admin/users/show.blade.php
resources/views/admin/users/_form.blade.php
routes/admin.php

It also appends this resource route inside the existing routes/admin.php group if the route is not already present:

Route::resource('users', \App\Http\Controllers\Admin\UserController::class);

Generated route names become:

admin.users.index
admin.users.create
admin.users.store
admin.users.show
admin.users.edit
admin.users.update
admin.users.destroy

Generated URL examples:

/admin/users
/admin/users/create
/admin/users/{user}/edit

Module command options

php artisan panel:make-module User --panel=admin
php artisan panel:make-module User --panel=admin --force
php artisan panel:make-module User --panel=admin --register-route
php artisan panel:make-module User --panel=admin --fields="name:string,email:string,status:boolean"
php artisan panel:make-module User --panel=admin --table=users
php artisan panel:make-module User --panel=admin --route-uri=users
php artisan panel:make-module User --panel=admin --route-name=users
php artisan panel:make-module User --panel=admin --skip-model
php artisan panel:make-module User --panel=admin --skip-migration
php artisan panel:make-module User --panel=admin --skip-controller
php artisan panel:make-module User --panel=admin --skip-requests
php artisan panel:make-module User --panel=admin --skip-views
php artisan panel:make-module User --panel=admin --skip-routes

Use --register-route when the command creates a new routes/{panel}.php file and you also want it to add this line to routes/web.php:

require __DIR__ . '/admin.php';

Field syntax

Use this format:

field:type
field:type:nullable

Examples:

--fields="name:string,email:string,status:boolean"
--fields="title:string,description:text:nullable,price:decimal,published_at:date:nullable"
--fields="category_id:foreignId,name:string,sort_order:integer,status:boolean"

Supported basic types:

string
text
longText
integer
bigInteger
foreignId
boolean
date
dateTime
timestamp
decimal
json

Where to customize module CRUD templates

Default module templates are inside the package:

resources/modules/default/
  models/
  migrations/
  controllers/
  requests/
  views/
  routes/

To publish editable module templates into your Laravel app:

php artisan vendor:publish --tag=panel-generator-modules

Then edit:

resources/vendor/panel-generator/modules/default/

You can also create a module-specific template. For example:

resources/vendor/panel-generator/modules/user/
resources/vendor/panel-generator/modules/product/

The command checks the module-specific template first, then falls back to default.

Important module template tokens

Use these tokens inside module model, migration, controller, request, view, and route templates:

___PANEL_SLUG___
___PANEL_CLASS___
___PANEL_VIEW_NAMESPACE___
___PANEL_CONTROLLER_NAMESPACE___
___MODULE_CLASS___
___MODULE_TITLE___
___MODULE_PLURAL_TITLE___
___MODULE_VARIABLE___
___MODULE_PLURAL_VARIABLE___
___MODULE_TABLE___
___MODULE_ROUTE_URI___
___MODULE_ROUTE_NAME___
___MODULE_ROUTE_PREFIX___
___MODULE_VIEW_NAMESPACE___
___MODULE_MODEL_NAMESPACE___
___MODULE_MODEL_FULL_CLASS___
___MODULE_CONTROLLER_NAMESPACE___
___MODULE_REQUEST_NAMESPACE___
___MODULE_STORE_REQUEST_CLASS___
___MODULE_UPDATE_REQUEST_CLASS___
___MODULE_FILLABLE_ARRAY___
___MODULE_CASTS_ARRAY___
___MODULE_MIGRATION_COLUMNS___
___MODULE_STORE_RULES___
___MODULE_UPDATE_RULES___
___MODULE_FORM_FIELDS___
___MODULE_TABLE_HEADERS___
___MODULE_TABLE_CELLS___
___MODULE_SHOW_ROWS___

For User --panel=admin, examples become:

___PANEL_VIEW_NAMESPACE___  => admin
___MODULE_VIEW_NAMESPACE___ => admin.users
___MODULE_ROUTE_PREFIX___   => admin.users.
___MODULE_MODEL_FULL_CLASS___ => App\Models\User

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: CSS

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-13

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固