Size: a a a

2020 February 18

OP

Oleksandr Petrenko in Laravel UA
Привіт. Питання може нубське, але чому з двох роутів:

Route::get('/{slug}', 'SystemController@show')->name('system');
       Route::get('/{slug}', 'DeveloperController@show')->name('devs');

працює тільки якийсь один?

В обох випадках до в'юхи передаю так:

 public function show()
   {
       $system = System::where('slug', request()->route('slug'))->firstOrFail();
       return view('systems.show', ['system' => $system]);
   }

public function show()
   {
       $developer = Developer::where('slug', request()->route('slug'))->firstOrFail();
       return view('developer.index', ['developer' => $developer]);
   }


Якщо видалити якийсь один, то інший працює нормально. Розумію, що Route::get('/{slug} є і тім і там, але як по іншому показувати ці сторінки без префіксів в урлі?
источник

AK

Alex Kovalchuk in Laravel UA
Oleksandr Petrenko
Привіт. Питання може нубське, але чому з двох роутів:

Route::get('/{slug}', 'SystemController@show')->name('system');
       Route::get('/{slug}', 'DeveloperController@show')->name('devs');

працює тільки якийсь один?

В обох випадках до в'юхи передаю так:

 public function show()
   {
       $system = System::where('slug', request()->route('slug'))->firstOrFail();
       return view('systems.show', ['system' => $system]);
   }

public function show()
   {
       $developer = Developer::where('slug', request()->route('slug'))->firstOrFail();
       return view('developer.index', ['developer' => $developer]);
   }


Якщо видалити якийсь один, то інший працює нормально. Розумію, що Route::get('/{slug} є і тім і там, але як по іншому показувати ці сторінки без префіксів в урлі?
емм тут проблема в тому що один роут перехвачує все і інший просто не працює
источник

MR

Maxim Rebitskiy in Laravel UA
Oleksandr Petrenko
Привіт. Питання може нубське, але чому з двох роутів:

Route::get('/{slug}', 'SystemController@show')->name('system');
       Route::get('/{slug}', 'DeveloperController@show')->name('devs');

працює тільки якийсь один?

В обох випадках до в'юхи передаю так:

 public function show()
   {
       $system = System::where('slug', request()->route('slug'))->firstOrFail();
       return view('systems.show', ['system' => $system]);
   }

public function show()
   {
       $developer = Developer::where('slug', request()->route('slug'))->firstOrFail();
       return view('developer.index', ['developer' => $developer]);
   }


Якщо видалити якийсь один, то інший працює нормально. Розумію, що Route::get('/{slug} є і тім і там, але як по іншому показувати ці сторінки без префіксів в урлі?
ніяк
источник

MR

Maxim Rebitskiy in Laravel UA
Визначати в контролері, де що існує
источник

AK

Alex Kovalchuk in Laravel UA
я думаю найбільш підходяще це зробити модель обєднання таблицю з slug оскільки при таких комбінаціях у System і Developer не може бути одинакового slug
источник

MR

Maxim Rebitskiy in Laravel UA
Oleksandr Petrenko
Привіт. Питання може нубське, але чому з двох роутів:

Route::get('/{slug}', 'SystemController@show')->name('system');
       Route::get('/{slug}', 'DeveloperController@show')->name('devs');

працює тільки якийсь один?

В обох випадках до в'юхи передаю так:

 public function show()
   {
       $system = System::where('slug', request()->route('slug'))->firstOrFail();
       return view('systems.show', ['system' => $system]);
   }

public function show()
   {
       $developer = Developer::where('slug', request()->route('slug'))->firstOrFail();
       return view('developer.index', ['developer' => $developer]);
   }


Якщо видалити якийсь один, то інший працює нормально. Розумію, що Route::get('/{slug} є і тім і там, але як по іншому показувати ці сторінки без префіксів в урлі?
І взагалі тут краще використовувати Route Model Binding
источник

OP

Oleksandr Petrenko in Laravel UA
Дякую всім, буду пробувати. Дивно, задача здається проста - показувати після домена тільки слаг, без сегментів типу /systems/ чи /developers/ , але вирішення цієї проблеми якесь неявне. Хоча, можливо я просто з цим не стикався
источник

П

Павел in Laravel UA
Просто обрабатывать должен один контроллер
источник

П

Павел in Laravel UA
или маршрут должен стять последним после перебора всех остальных
источник

П

Павел in Laravel UA
сам поставь себя на место маршрутизатора
источник

П

Павел in Laravel UA
/dev для него не отличается от /sys
источник

П

Павел in Laravel UA
это все слаги
источник

OP

Oleksandr Petrenko in Laravel UA
Павел
Просто обрабатывать должен один контроллер
Це в моєму випадку зробити буде найпростіше
источник

OP

Oleksandr Petrenko in Laravel UA
Павел
/dev для него не отличается от /sys
згоден
источник

П

Павел in Laravel UA
есть еще вариант regexp
источник

П

Павел in Laravel UA
как-то слаги пометить
источник

П

Павел in Laravel UA
dev-SLUG и sys-SLUG
источник

OP

Oleksandr Petrenko in Laravel UA
Павел
как-то слаги пометить
зробити параметр не {slug} , а наприклад, {devslug}, {systemslug}
источник

MR

Maxim Rebitskiy in Laravel UA
Oleksandr Petrenko
зробити параметр не {slug} , а наприклад, {devslug}, {systemslug}
Це не так працює)
источник

MR

Maxim Rebitskiy in Laravel UA
Як ти назвеш параметри в роуті, взагалі немає різинці в цьому випадку
источник