Laravel 5 路线合并

Laravel 5 Routes combined

是否可以合并 say news 和 content 的路由?两者都是不同的型号,都有自己的控制器。

Link 1 = /news-item/  (news controller & model)    
Link 2 = /about-us/  (content controller & model)

正如您在 link 1 和 link 2 中看到的那样,我希望这两个模型都是单一的,没有文件夹处理它们。

请参阅下面我认为可行但行不通的示例代码:

Route::get( '/{page_url}/', 'NewsController@show' );
Route::get( '/{page_url}/', 'ContentController@show' );

我已经试过了,但它只能得到 2 个控制器中的一个。我可以看到明显的冲突。

是否有另一种方法可以在超过 1 个控制器上实现单个 url slug?

我看到的唯一方法是像这样定义一个路由:

Route::get( '/{page_url}/', 'SlugController@show');

然后在controller方法中,检查新闻table或内容table是否存在slug,然后显示相关内容。如果没有找到,显示错误。

我看到的另一种方式是使用前面的路径,

Route::get( 'news/{page_url}/', 'NewsController@show');
Route::get( 'content/{page_url}/', 'ContentController@show');

好吧,这是一个非常糟糕的做法,因为请求-响应唯一性之间的范例丢失了,因此对于未来的优化你会很糟糕。如果 url:

没有区别,你就无法实现你想要的
Route::get( '/foo', 'NewsController@show' );
Route::get( '/foo', 'ContentController@show' );

正如您所看到的明显冲突,您如何在请求中注意到它们之间的差异?这不可能。 Lavaral 将用相同的值 (url)

覆盖每条路线 "key"