Laravel - маршруты не работают (не найдено)

У меня есть рабочий маршрут как

Route::get('/{url}', 'Controller@view)->name('view')->where('url', '[\w\d\-]+(.*)');

Это отлично работает и показывает страницу, как показано ниже (просто демонстрационная страница): Laravel - маршруты не работают (не найдено)

У меня есть ссылка на этой странице для размещения заказа, и я хочу создать маршрут как

Route::get('/{url}/order', 'Controller@order)->name('order')->where('url', '[\w\d\-]+(.*)');

Просмотр Blade

<a href = "{{ route('order', $product['url']) }}">Order Now</a>

php artisan route:list

|    | GET|HEAD | {slug}        | view   | App\Http\Controllers\Controller@view    | web   |
|    | GET|HEAD | {slug}/order  | order  | App\Http\Controllers\Controller@order   | web   |

Каждый раз, когда я нажимаю на эту ссылку, Laravel возвращает Ошибка не найдена. В чем проблема? Я перезапустил сервер и проверил Mod_rewrite. Все хорошо.

Поменяйте положение ваших 2 маршрутов. {slug}/order переходит к {{slug}}, потому что он соответствует требованиям. Если вы переместите порядок выше обычного слага, он должен сработать

Taacoo 03.04.2018 10:03

@universal: покажите свою ценность для $ product ['url']

AddWeb Solution Pvt Ltd 03.04.2018 10:32

Решение @Taacoo сработало!

universal 03.04.2018 11:28

Я дам вам ответ, который вы можете принять, если хотите @universal

Taacoo 03.04.2018 11:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
3 623
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, ты забыл 'в своем коде Измените свой код

Route::get('/{url}/order', 'Controller@order)->name('order')->where('url', '[\w\d\-]+(.*)');

к

Route::get('/{url}/order', 'Controller@order')->name('order')->where('url', '[\w\d\-]+(.*)');
Ответ принят как подходящий

Маршруты работают сверху вниз. Laravel ищет все, что соответствует указанному URL-адресу.

При использовании {{slugs}} или любых других параметров важно, чтобы вы поместили ключ с самым широким диапазоном в нижнюю часть ваших маршрутов.

Пример:

Route::get('/{url}', 'Controller@index);
Route::get('/{url}/order', 'Controller@order);

С этой настройкой. ВСЕ маршруты будут идти к вашему методу Controller @ index. Поскольку ваш {{url}} ловит все

При переключении 2 ваш более строгий маршрут сначала выполняется перед URL-адресом с очень широкими требованиями.

Для получения дополнительной информации проверьте документы laravel

Другие вопросы по теме