Laravel路由-两个名称相似的网址

问题描述 投票:1回答:3

我正在与Laravel建立论坛。我决定有这样的路线:

Route::get('/{topicName}', 'ForumController@showTopic');
Route::get('/{postSubject}', 'ForumController@showPost');

我也有另一条路线,但是这两条在底部,因为当我在URL中写某事(而laravel找不到通过地址)时,所有内容都落入了这条路线(尤其是第一条路线)。我不知道该如何编程才能使用最后两条路线。当有人添加我的主题名称时,他将进入网站:

http:/forum/php

http:/forum/javaScript

然后用户可以看到此主题的所有帖子。但是,当用户希望看到一个特定的帖子时,我想进入以下网址:

http:/forum/post_subject_name

现在用户可以看到特定的帖子。如何执行此操作,因为现在所有内容都归我的第一个控制器-ForumController @ showTopic')。这可能吗?

php laravel routes
3个回答
2
投票

您不能,这两个路由都具有相同的要求,如果它们都位于路由的底部,则topicName将始终具有优先级。

您应该有诸如这样的路线>

Route::get('/topics/{topicName}', 'ForumController@showTopic');
Route::get('/posts/{postSubject}', 'ForumController@showPost');

这样您就可以区分它们


1
投票

问题是两条路由都包含一个参数,而没有别的。应该如何知道给定的参数是主题名称还是帖子主题?


0
投票

我认为您可以在路线中使用模式

© www.soinside.com 2019 - 2024. All rights reserved.