我尝试在网址中没有任何其他参数的情况下获取我的路由,并且我收到Sorry, the page you are looking for could not be found.
错误。
如果我使用url:domain/category/lenovo
其中lenovo是我的slug它正在工作。但是,如果我试图得到我的网址:domain/lenovo
我上面的错误。
这是我的代码:
route
Route::get('/{categoryslug}', 'frontend\FrontendController@totalcategoriessubs')->name('catwithsubs')->where('categoryslug', '[\w\d\-\_]+');
function
public function totalcategoriessubs($categoryslug) {
$categories = Category::where('slug','=',$categoryslug)->with('subcategories')->paginate(12);
return view('front.categoriessubs', compact('categories'));
}
它还会制动我的其他网址,例如domain/admin/dashboard
等。
任何想法?
答案 0 :(得分:2)
这似乎是由路线的顺序引起的。
您的实际问题是,当您点击固定端点时,例如/dashboard
,这将由Route::get('/{categoryslug}', ...)
在正确的端点(Route::get('dashboard', ...)
)之前处理。因此,当您的系统注意到没有具有该slug(dashboard
)的类别时,它会抛出错误。
尝试更改路线的顺序,如下所示:
Route::get('/category/{categorySlug}', 'CategoryController@index');
Route::get('/dashboard', 'DashboardController@home');
// and so on..
Route::get('/{categoryslug}', 'frontend\FrontendController@totalcategoriessubs')
->name('catwithsubs')->where('categoryslug', '[\w\d\-\_]+');
始终将具有固定部分(.../category/...
)的路线放在具有动态元素(.../{categoryslug}/
)的路线之前。