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"
是否可以合并 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"