Php laravel路线不适用于所需参数

Php laravel路线不适用于所需参数,php,routing,laravel-5.1,Php,Routing,Laravel 5.1,我的routes.php中有一条路由 Route::get('{subcat}', array( 'uses' => 'frontend\homeController@uploadAd' )) 我发现上面的路径影响了我的userlogout路径,就像这样 Route::get('userlogout', array( 'uses' => 'frontend\homeController@userlogout' )); 我正在从blade视图获取{subcat}路由参数

我的
routes.php中有一条路由

Route::get('{subcat}', array(
  'uses'  => 'frontend\homeController@uploadAd'
))
我发现上面的路径影响了我的
userlogout
路径,就像这样

Route::get('userlogout', array(
   'uses' => 'frontend\homeController@userlogout'
));
我正在从blade视图获取
{subcat}
路由参数,如

<a href="{{ subcategoryslug}}">subcategoryname</a>
允许用户从系统注销


我做错了什么?有什么我不能只指定
route参数作为我的
route name

我想你可以通过在subcat路由之后定义注销路由来解决这个问题,如下所示:

Route::get('{subcat}', array(
  'uses'  => 'frontend\homeController@uploadAd'
));

Route::get('userlogout', array(
   'uses' => 'frontend\homeController@userlogout'
));

这是因为第一个路由将使用单个参数匹配任何url。正如我所知,在这种情况下,定义路由的顺序很重要。

您是否尝试过在subcat路由之前编写userlogout路由?@Amarnasan明白了。。谢谢你现在正在工作。我只想问一下,是什么决定了路由顺序?有什么细节吗?我想你的意思正好相反:“{subcat}”正在阻止“userlogout”路由路由路由顺序是在routing.php文件中指定路由的顺序。第一条匹配路线就是使用的路线。我认为没有任何细节。。这取决于不同的应用。。当订单很重要时,你的案例就是一个很好的例子。。关于这一点,我只能说,我将避免使用可能匹配相同url的路由。我会为每个动作创建特定的路线。在您的情况下,我会将
{subcat}
更改为
uploadAd/{subcat}
@Amarnasan。我写答案的方式是定义路由的方式。如果反转这两个路由,则
用户注销
路由将不再工作,因为url将与第二个路由匹配:
{subcat}
Route::get('{subcat}', array(
  'uses'  => 'frontend\homeController@uploadAd'
));

Route::get('userlogout', array(
   'uses' => 'frontend\homeController@userlogout'
));