在路线上呼叫合适的控制器

时间:2019-01-09 01:50:58

标签: laravel laravel-5

在某些情况下(例如在我的应用中)遇到麻烦,我有一个cms表和一个product表。

例如,我的路线

Route::get('{slug}', 'Frontend\ProductController@view')->name('frontend-view-product');
Route::get('staticpage', 'Frontend\SiteController@view')->name('frontend-view-static');
Route::get('{slug}', 'Frontend\CmsController@view')->name('frontend-view-cms');

唯一的问题是路由被弄乱了,有没有办法我可以维持当前的路由并在正确的控制器中调用这些路由?

2 个答案:

答案 0 :(得分:2)

可能是因为您在第一条路线和第三条路线中使用了相同的路线..据我所知,在路线中使用括号将其设置为变量..尝试使其与众不同

Route::get('product/{slug}', 'Frontend\ProductController@view')->name('frontend-view-product');

Route::get('cms/{slug}', 'Frontend\CmsController@view')->name('frontend-view-cms')

答案 1 :(得分:0)

您已经有了答案,但是您也可以尝试此选项。希望它能工作。

Route::get('{slug}', 'Frontend\ProductController@view')->name('frontend-view-product')->where('slug','prod');
Route::get('staticpage', 'Frontend\SiteController@view')->name('frontend-view-static');
Route::get('{slug}', 'Frontend\CmsController@view')->name('frontend-view-cms')->where('slug','cms');

Where将slug参数与prodcms匹配,它将调用匹配的控制器动作。