Не всичко трябва да е на стена от маршрути във вашия файл с маршрути.

Простите приложения могат да използват файловете routes/web.php или routes/api.php, за да опишат своите маршрути. Тъй като са малки, няма много за писане и е разумно да го поддържате под 50 или по-малко.

Други може да имат повече от 50, дори стотици маршрути. Вместо да продължавате да ги записвате в един файл, можете да организирате маршрутите си с помощта на множество файлове. Това са моите най-важни препоръки за работа с тънки и организирани файлове с маршрути, така че да не загубите представа какво и къде.

Просто добавете друг файл

Отидете на вашия App/Providers/RouteServiceProvider и намерете метода map(). Тук доставчикът на услуги ще начертае вашите маршрути. Бърз поглед върху файла и ще забележите, че API и уеб маршрутите се картографират с помощта на други методи.

Можете просто да копирате и поставите кода вътре в mapWebRoutes() и да промените груповия файл за този, който искате:

/**
 * Define the routes for the application.
 *
 * @return void
 */
public function map()
{
    $this->mapApiRoutes();
    $this->mapWebRoutes();
    Route::middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/my-custom-routes.php'));
}

Приложението ще картографира API маршрутите, уеб маршрутите и накрая вашите собствени персонализирани маршрути.

Групирайте файл

Фасадата Routes ви позволява да създадете група от маршрути, като използвате Closure, който връща повече маршрути, но, както видяхте по-рано, рамката започва с извикване на файл.

Във вашите файлове с маршрути можете да използвате същата техника. Вместо да използвате Closure, можете просто да посочите друг файл, ефективно намалявайки маршрутния файл.

Route::name('dashboard')
    ->prefix('dashboard')
    ->namespace('Dashboard')
    ->middleware(['auth','verified'])
    ->group(__DIR__ . '/web/dashboard.php');

След това можем да създадем routes/web/dashboard.php файл, съдържащ маршрутите за нашето табло за управление. Ние също така прилагаме персонализирано пространство от имена, префикс, междинен софтуер за всички маршрути и име, което трябва да бъде добавено.

Можем също така да вложим повече групи в група и да имаме няколко в един файл. Няма проблем:

// routes/web/dashboard.php
Route::get('/', 'HomeController');
Route::get('/account', 'AccountController@show');
Route::post('/account', 'AccountController@update');
Route::name('users')
    ->prefix('users')
    ->namespace('Users')
    ->middleware('can:manage-users')
    ->group(__DIR__ . '/dashboard/users.php');
Route::name('delivery')
    ->prefix('delivery')
    ->namespace('Delivery')
    ->middleware('can:manage-delivery')
    ->group(__DIR__ . 'dashboard/delivery.php');

Проста група

Понякога не е необходимо да поставяте имена, префикси, пространства от имена и мидълуер към група. Можете просто да създадете група и да поставите всички маршрути вътре и да управлявате техните префикси, пространства от имена, мидълуер и имена според сценария за всеки отделен случай. Просто ще изплюя нещо произволно само за пример:

// routes/web.php
Route::group(__DIR__ . '/web/message.php');
// routes/web/message.php
Route::get('client/send', 'MessageController@clientShow');
Route::post('client/send', 'MessageController@clientSend');
Route::get('courier/send', 'MessageController@courierShow')
    ->middleware('can:send-message-to-courier');
Route::get('courier/send', 'MessageController@courierShow')
    ->middleware('can:send-message-to-courier');

Обвързване на модел на маршрут като префикс

Друго нещо, което можете да направите, е да създавате групи, е да използвате Route Model Binding като префикс, което прави всичките ви дъщерни маршрути да споделят едно и също обвързване.

// routes/web.php
Route::prefix('{delivery}')->group(__DIR__ . '/web/delivery.php');
// routes/web/delivery.php
Route::get('/', 'DeliveryController@show');
Route::get('/routes', 'DeliveryController@routes');
Route::get('/products', 'DeliveryController@products');
Route::get('/drivers', 'DriverController@deliveryDriver');

Така че няма нужда да променяте буквално повръщаните стени от маршрути в един файл и да се надявате на най-доброто, докато имате нужда от карта, за да разберете къде, по дяволите, е този маршрут, който се сблъсква с други. /rant