ikechukwukalu/magicmake
Composer 安装命令:
composer require ikechukwukalu/magicmake
包简介
A scaffolding package for an opinionated Laravel coding style.
README 文档
README
A Laravel scaffolding package for an opinionated Laravel coding style.
REQUIREMENTS
- PHP 8.2+
- Laravel 11+
STEPS TO INSTALL
composer require ikechukwukalu/magicmake
SET UP LARAVEL
php artisan install:api
INIT CLASSES
To initialize prepared classes for a new laravel app. This would only run when env('APP_ENV') === local and env(MAGIC_INIT_LOCK) === false.
php artisan magic:init
MODEL BASED CLASSES
To generate all model based prepared classes.
php artisan magic:model UserKyc
To generate individual model based prepared classes.
php artisan magic:contract UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:repository UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:service UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:controller UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:createRequest UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:updateRequest UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:deleteRequest UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:readRequest UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:api UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:test UserKyc --variable=userKyc --underscore=user_kyc php artisan magic:factory UserKyc --variable=userKyc --underscore=user_kyc
Note
Add this to config/api.php.
'paginate' => [ ... 'user_kyc' => [ 'pageSize' => 10, ], ],
Add this to app/Providers/RepositoryServiceProvider.php.
use App\Contracts\UserKycRepositoryInterface; use App\Repositories\UserKycRepository; public function register(): void { ... $this->app->bind(UserKycRepositoryInterface::class, UserKycRepository::class); }
FINISHING SETUP
If you did run php artisan magic:init.
Add to the composer.json file.
"autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" }, "files": [ "app/Http/Helpers.php" ] },
After that run:
composer dump-autoload
Add to bootstrap/providers.php.
/* * Package Service Providers... */ App\Providers\EventServiceProvider::class, App\Providers\MacroServiceProvider::class, App\Providers\RepositoryServiceProvider::class,
Add to bootstrap/app.php
->withMiddleware(function (Middleware $middleware) { // $middleware->alias([ 'check.email.verification' => \App\Http\Middleware\CheckEmailVerification::class, 'check.user.is.admin' => \App\Http\Middleware\CheckIfUserIsAdmin::class, 'check.phone.verification' => \App\Http\Middleware\CheckPhoneVerification::class, ]); })
Add to vite.config.js
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: [ 'resources/sass/app.scss', 'resources/js/app.js', 'resources/css/app.css', ], refresh: true, }), ], });
Project setup
php artisan ui bootstrap npm install composer install php artisan migrate --seed
Run development server
npm run build
php artisan serve
php artisan test
NOTE
Publish notification blade
Add the following line above this code line @if ($emailData->action) in the notification.blade.php file:
@if (isset($emailData->highlightText)) @component('mail::panel', ['style' => 'background-color: #f0f8ff; border-radius: 0.5rem; padding: 16px;text-align: center']) <div style="text-align: center;"> {{ $emailData->highlightText }} </div> @endcomponent @endif
App notification helpers
$userNotificationData = new UserNotificationData($user->id, $title, $text); $user->notify(new DatabaseNotification($userNotificationData->toObject())); $emailData = new EmailData(subject: $title, lines: [$text], from: env('MAIL_FROM_ADDRESS'), remark: null, action: false, action_text: null, action_url: null, attachements: null); $user->notify(new EmailNotification($emailData->toObject())); $smsData = new SmsData($user->name, $text); $user->notify(new SmsNotification($smsData->toObject()));
Advanced search and table filter helpers
Sample usage:
public function getPaginated(int $pageSize): LengthAwarePaginator { /** * Search a parent table via the user_id foreign key on the user_deliveries table */ $search = advancedSearch('user', 'user_id', ['unit_number', 'name', 'email', 'first_name', 'last_name', 'middle_name']); /** * Search a child table via the user_delivery_id foreign key on the user_delivery_items table */ $search2 = advancedSearch('userDeliveryItems', 'user_delivery_id', ['tracking_number', 'name', 'delivery_vendor'], 'user_delivery_items'); return UserDelivery::with(['user', 'userDeliveryItems']) ->search($search) ->search($search2) ->orWhere(function($query) { $query->search('ref_number'); }) ->order() ->date() ->filter($this->whiteList) ->paginate(pageSize($pageSize)); }
LICENSE
The MM package is a software licensed under the Apache 2.0 license.
统计信息
- 总下载量: 5.78k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2024-02-26