Полный цикл в digital

Разрешение конфликтов роутов

Laravel проверяет маршруты по порядку их записи. Если найден подходящий маршрут, то дальнейшая проверка прекращается.

Из-за этого маршруты могут конфликтовать друг с другом. Например, в следующем примере второй маршут никогда не будет достигнут, так обращение к нему будет перехвачено первым маршрутом:

resources/routes/web.php<?php
Route::get('/post/{id}', function ($id) {
    return 'id';
});
Route::get('/post/all', function () {
    return 'all';
});

Для избежания конфликтов следует писать более частные случаи маршрутов вначале, а потом - более общие. Поменяем порядок следования наших маршрутов и проблема исчезнет:

resources/routes/web.php<?php
Route::get('/post/all', function () {
    return 'all';
});
Route::get('/post/{id}', function ($id) {
    return 'id';
});

Можно также наложить ограничение на параметры. В этом случае причина конфликта исчезнет. Давайте укажем, что наши id должны быть числами. В этом случае второй маршрут уже не будет частным случаем первого и все будет работать верно:

resources/routes/web.php<?php
Route::get('/post/{id}', function ($id) {
    return 'id';
})->where('id', '[0-9]+');
Route::get('/post/all', function () {
    return 'all';
});
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг