控制器设计模式

时间:2018-04-18 19:58:34

标签: laravel model-view-controller controllers

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

我有这两条路线

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

但是知道,我想为此索引添加另一条路径

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

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

2 个答案:

答案 0 :(得分:1)

通常,控制器用于响应与特定资源(模型)关联的请求。因此,根据您的具体示例,适用两种不同的方案。

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

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

答案 1 :(得分:0)

每个资源类型都有一个控制器,这对我来说总是最好的。 你有FooController的资源'foo',和BarController的'bar'。因此,对于根上下文资源,您需要一个根控制器。

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