دانی پاس ۰۰ / laravel-dynamic-routes
یک ارائهدهنده مسیرهای پویا که مسیرهای فایلها را بر اساس مسیرشان در سیستم فایلها نگاشت میکند
Requires
- php: ^8.2|^8.1|^8.0
- laravel/framework: ^10.0|^9.0
This package is auto-updated.
Last update: 2024-09-14 17:00:58 UTC
README
Laravel dynamic routes یک RouteServiceProvider ساده است که مسیرهای پویا را بر اساس مکان آنها در سیستم فایلها حل میکند. نامهای مسیر و پیشوندها به طور پویا به مسیرهای حل شده توسط این ارائهدهنده اختصاص داده میشوند و میتوانند به سطح پوشه (گروههای میانبر) اختصاص داده شوند.
نصب
composer require dannypas00/laravel-dynamic-routes
اجرایی
اجرایی بسیار ساده است؛ فقط واردات RouteServiceProvider پیشفرض را در App\Providers\RouteServiceProvider پروژهتان از Illuminate\Foundation\Support\Providers\RouteServiceProvider به DannyPas00\LaravelDynamicRoutes\RouteServiceProvider تغییر دهید.
<?php namespace App\Providers; use DannyPas00\LaravelDynamicRoutes\RouteServiceProvider as ServiceProvider; class RouteServiceProvider extends ServiceProvider { public const HOME = '/home'; }
مثال
بگوییم ساختار پوشهمان به این صورت باشد
- MyProject/
- app/
- routes/
- api/
- rest/
- users.php -> index,show
- shops.php -> index,show
- web/
- root.php -> home
- users.php -> index,show
در vanilla laravel، شما نیاز به اضافه کردن کد به RouteServiceProvider دارید تا هر کدام از این فایلها به طور جداگانه ثبت شوند. این باعث میشود که مدیریت پروژههای بزرگ مشکلساز شود زیرا شما یا با چند فایل مسیر بسیار بزرگ (مثل web.php یا api.php) مواجه میشوید، یا تعداد زیادی فایلهای کوچک دارید که همهی آنها نیاز به یک قطعه کد جداگانه در RouteServiceProvider دارند، و این باعث شلوغی ارائهدهنده میشود. با مسیرهای پویا اما، همهی این فایلهای مسیر بدون نیاز به هرگونه تنظیم اضافی ثبت میشوند. وقتی این کار انجام شد، مسیرهای فایل مسیرهای فایل به مسیرهای مرتبط با مکان فایل اختصاص داده میشوند. به عنوان مثال، مسیرهای ثبت شده در فایل routes/api/rest/users.php به عنوان api/rest/users/{route} ثبت میشوند.
خروجی کامل php artisan route:list به این صورت خواهد بود
GET|HEAD api/rest/users ............... api.users.index
GET|HEAD api/rest/users/{id} .......... api.users.show
GET|HEAD api/rest/shops ............... api.shops.index
GET|HEAD api/rest/shops/{id} .......... api.shops.show
GET|HEAD users ........................ users.index
GET|HEAD users/{id} ................... users.show
GET|HEAD / ............................ home
چون ارائهدهنده مسیرهای پویا از ارائهدهنده laravel ارث میبرد، همهی روشها همچنان میتوانند تغییر داده شوند، به شرطی که روشهای boot() یا routeRegistration() ارائهدهنده پویا فراخوانی شوند.
تخصیصدهی
گزینههای تخصیص زیر در ارائهدهنده مسیرهای پویا موجود هستند
پوشه مسیر
تنظیم کردن ROUTE_DIRECTORY به عنوان یک ثابت در ارائهدهندهای که اجرا میشود، پوشه پیشفرض routes/ را تغییر میدهد.
فایل ریشه
تنظیم کردن ROOT_FILE به عنوان یک ثابت در ارائهدهندهای که اجرا میشود، کدام فایلها به عنوان " فایل ریشه" شناخته میشوند، تغییر میدهد.
هر فایل ریشه در هر پوشهای به نام خودش در پیشوند یا مسیر منعکس نمیشود (مثلاً root.php در مثال).
مسطح کردن پوشهها
هر پوشهای که به آرایه FLATTEN_DIRECTORIES اضافه شود، هنگام ساخت مسیرها و پیشوندها نادیده گرفته میشود.
به طور پیشفرض بر روی 'web' تنظیم شده است، هر فایل در پوشه routes/web دارای "web" در مسیر یا پیشوند خود نخواهد بود.
مطابقت میانبرها
برای هر نوع مطابقت میانبر گستردهای (مثلاً تقسیمبندی web و api)، میتوان روش matchMiddleware را تغییر داد.
این روش یک رشته پوشه مسیر را میپذیرد و یک رشته میانبر (یا null وقتی که نیاز به تنظیم میانبری نیست) به عنوان پاسخ انتظار دارد.