2015-06-12 6 views
1

Я делаю простой проект. Я хочу, чтобы это было как можно меньше, поэтому я попытался создать систему, где я могу создавать страницы, и они размещаются по адресу localhost/{page?}Laravel - несколько маршрутов

Но вот в чем проблема. Я также хочу, чтобы определенные маршруты были определены (например, маршрут /blog), как показано ниже.

Route::get('/{page?}', ['as' => 'root', 'uses' => '[email protected]']); 

Route::get('blog/{slug?}', ['as' => 'blog.post', 'uses' => '[email protected]']); 
Route::get('blog/page/{page}', ['as' => 'blog.page', 'uses' => '[email protected]'])->where('page', '[0-9]+'); 

С помощью этой установки используется только первый маршрут.

Мой вопрос есть. Есть ли способ сделать это? Или это превосходит возможности Ларавеля?

Благодарим за помощь.

ответ

3

Да, разместите свой первый маршрут как последний маршрут. Таким образом, он будет поднят последним. Вам также может понадобиться разместить blog/{slug?} до этого, так что blog/slug/{page} является первым.

Route::get('blog/page/{page}', ['as' => 'blog.page', 'uses' => '[email protected]'])->where('page', '[0-9]+'); 

Route::get('blog/{slug?}', ['as' => 'blog.post', 'uses' => '[email protected]']); 

Route::get('/{page?}', ['as' => 'root', 'uses' => '[email protected]']); 

В основном то, что происходит это самый основной маршрут подбирая другие маршруты, потому что нет никаких оснований для этого не и технически совпадает с маршрутом, даже если это не путь вы хотите. Сначала, используя наиболее специфические маршруты, эта проблема решается.

+0

Спасибо. Я как бы забыл, что порядок может изменить это. – Aadam

+0

Имейте upvote sir – haakym

2

Try переназначения их:

Route::get('blog/page/{page}', ['as' => 'blog.page', 'uses' => '[email protected]'])->where('page', '[0-9]+'); 

Route::get('blog/{slug?}', ['as' => 'blog.post', 'uses' => '[email protected]']); 

Route::get('/{page?}', ['as' => 'root', 'uses' => '[email protected]']); 

иначе они получают "переписывается"

+1

Чтобы быть справедливым @ user3158900 ответил за 2 минуты до меня, чтобы он получил принятый ответ, и он дал лучшее объяснение – haakym

Смежные вопросы