laravel 5 slug不会返回页面

时间:2018-03-15 02:20:39

标签: php laravel slug

我尝试在网址中没有任何其他参数的情况下获取我的路由,并且我收到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等。

任何想法?

1 个答案:

答案 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}/)的路线之前。