我在网络路由中遇到 slug 和 id 问题

时间:2021-01-18 01:37:54

标签: laravel

我有这个代码

Route::get('posts/{id}/postedit','PostController@postedit');
Route::post('posts/{id}/postupdate','PostController@postupdate');
Route::get('posts/{id}/postdelete','PostController@postdelete');

Route::get('/{slug}', [
    'uses' => 'SiteController@singlepost',
    'as' => 'site.single.post'
    ]);

Route::get('/{id}', [
    'uses' => 'PendaftaranAlumniController@test',
    'as' => 'test',
]);

所以问题来了,当我像这样运行时它Route::get('/{slug}'它工作正常但Route::get('/{id}'它不起作用 否则当我把 Route::get('/{id} 放在顶部时它工作正常,但 Route::get('/{slug}' 不再工作。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

因为 /{slug}/{id} 被 Laravel 视为相同,所以路由 /{slug}/{id} 都将指向之前定义的任何路由。

你可以照原样使用它,你需要告诉 Laravel 这两条路由有任何不同,这样 Laravel 才会区别对待。

  Route::get('singlepost/{slug}', [
'uses' => 'SiteController@singlepost',
'as' => 'site.single.post'
]);

Route::get('test/{id}', [
'uses' => 'PendaftaranAlumniController@test',
'as' => 'test',
]);
相关问题