控制器设计模式

Controllers design pattern

我有一个关于 MVC 和控制器的设计问题

我有这两条路线

Route::get('/foo/{id}', FooController@show)
Route::get('/bar/{id}', BarController@show)

但是知道,我想像这样为索引添加另一条路线

Route::get('/', ???)

在这条路线中,我需要一些关于 Foo 和 Bar 模型的信息。 问题是,我应该为该路线创建一个新控制器吗?喜欢 MainController?

对我来说,为每种资源类型配备一个控制器一直是我的最佳选择。 FooController 有资源 'foo',BarController 有 'bar'。所以对于根上下文资源,你应该有一个根控制器。

这有助于分离关注点并使您的代码模块化。

一般来说,控制器旨在响应与特定资源(模型)关联的请求。因此,根据您的具体示例,适用两种不同的场景。

  1. 着陆页上需要 FooBar 模型(/ 路线):在这种情况下,专用控制器将是一件非常好的事情。此外,使用视图模型将是有益的。
  2. 着陆页上不需要有关特定应用程序模型的信息:您仍然可以使用专用控制器 class 来 return 您的视图,而另一种可能性是lambda 函数的使用:

    Route::get('/', function () {
        return view('landing');
    });