拉拉维尔以正确或更好的方式路由



我是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不是满足我需求的最佳选择。

那么有什么不好的理由为什么我不应该按照我的方式使用路线吗?

谢谢

由于不需要花费那么多时间或精力,我还建议明确一点,因为这可以让您在未来获得更多控制权。 另外,对于您当前的实现,每次想要添加新页面时,您都必须添加到 where 子句,因此无论如何都不会为您节省太多时间。

简化路由文件的一种方法是使用 view(( 而不是get()

Route::view('about', 'about')->name('about');

中间选项是将简单视图添加到数组中,并具有类似以下内容:

$basicViews = ['about', 'contact'];
foreach ($basicViews as $basicView) {
Route::view($basicView, $basicView)->name($basicView);
}

我并不是说你应该使用这种方法,但与使用PageController和正则表达式字符串相比,它有一些好处:

  • 可以清楚地看到所有涉及的路由,并且所有内容都包含在路由文件中。
  • 路由仍然可以命名。
  • 您不必担心可能有一个很长的正则表达式字符串

如果您需要更改 uri、刀片文件名或路由名称,那么我绝对建议您明确而不是试图使事情过于复杂。

我没有看到任何明显的安全问题或以您的方式声明路线的逻辑错误。

TL;博士

Laravel以某种方式做事是有原因的; 标准可能会在未来被证明是有用的。

另一方面,我可以在编写您试图避免的几行代码时有一些好处:

1. 可读性

当可用页面排列时,很容易看到可用页面的列表,就像在第一个例子中一样,而不是挖掘where调用及其参数。

2. 维护和升级能力

对于您来说,在这个时间点,使用动态页面调用器似乎是最简单、最快的方法,但对于 2 年后的您或其他程序员来说,将所有路由分解成更小的部分可能更有意义。您尚未实施的内容并不意味着它永远不会实现。如果以后需要向视图添加一些变量,则跳转到该方法调用并添加它们会容易得多。

3. 使用命名路由

在最终需要更改某些 URL 的情况下,在边栏选项卡模板中使用命名路由可以节省时间;这种技术无法真正用于动态页面调用方。

最新更新