دانی پاس ۰۰/laravel-dynamic-routes

این بسته بازنشسته شده و دیگر نگهداری نمی‌شود. هیچ بسته جایگزینی پیشنهاد نشده است.

یک ارائه‌دهنده مسیرهای پویا که مسیرهای فایل‌ها را بر اساس مسیرشان در سیستم فایل‌ها نگاشت می‌کند

1.0.2 2023-10-14 14:55 UTC

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 وقتی که نیاز به تنظیم میان‌بری نیست) به عنوان پاسخ انتظار دارد.