我对Laravel并不陌生,我想知道在使用路线和基本方式方面有很大的不同:
代替使用:
Route::get('/','PagesController@index')->name('home');
Route::get('/about','PagesController@about')->name('about');
Route::get('/contact','PagesController@contact')->name('contact');
And methods just return views...
我正在使用:
Route::get('/{page?}','PagesController@index')
->where(['page'=>'about|contact'])->name('page');
public function index($page = 'home') {
return view($page);
}
在第二个示例中,我可以删除很多行代码,因为resource controller
并不是满足我需求的最佳选择。
那么有什么不好的理由为什么我不应该以自己的方式使用路线?
谢谢
答案 0 :(得分:1)
我没有发现任何明显的安全问题或逻辑上的错误来声明路由。
TL; DR
Laravel以某种方式做事是有原因的;以下 标准可能会证明是有用的。
另一方面,编写要避免的几行代码可以带来一些好处:
1。可读性
与第一个示例中的页面一样,很容易看到可用页面的列表,而不是深入研究where
调用及其参数。
2。维护和可升级性
对于您来说,目前看来,使用动态页面调用程序似乎是最简单,最快的方法,但是对于您(两年之内)或其他程序员而言,拥有所有路由可能更有意义分解成小块。您尚未实现的内容并不意味着它永远不会实现。如果以后需要在视图中添加一些变量,则跳转到该方法调用中并添加它们会容易得多。
3。使用命名的路线
在最终的情况下,您需要更改一些Urls,在刀片模板中使用命名的路由可以节省您的时间;动态页面调用程序无法真正使用的技术。
答案 1 :(得分:1)
由于不需要那么多时间或精力,我也建议您保持明确,因为这样可以在将来为您提供更多控制。 再加上当前的实现,您每次想添加新页面时都必须在where子句中添加它,这样无论如何也不会为您节省太多时间。
一种简化路由文件的方法是使用view()而不是get()
:
Route::view('about', 'about')->name('about');
一种选择是将简单的视图添加到数组中,并具有以下内容:
$basicViews = ['about', 'contact'];
foreach ($basicViews as $basicView) {
Route::view($basicView, $basicView)->name($basicView);
}
我并不是说您应该使用这种方法,但是与使用PageController
和正则表达式字符串相比,它有很多好处:
如果您需要更改uri,刀片文件名或路由名,那么我绝对建议您将其明确化,而不要过度复杂化。