Laravel - 使用控制器

Posted

技术标签:

【中文标题】Laravel - 使用控制器【英文标题】:Laravel - Using Controllers 【发布时间】:2017-06-24 12:56:33 【问题描述】:

我使用的是 laravel 5.4,但有一件事我完全无法理解。我使用 make:controller (name) -resource 创建了一个带有 index/show/create/edit/update/destroy 的控制器。我正在制作的应用程序主要是 CRUD 操作。我的问题是:

我的数据库中每个需要 CRUD 操作的实体都必须有一个单独的控制器吗?例如,我有 2 个实体:项目、服务。我必须有 2 个控制器,或者它们可以在同一个控制器上,例如:

public function store_item(Request $request) 
            **Insert Query**
   


public function store_service(Request $request) 
            **Insert Query**
   

这样做的正确方法是什么?

【问题讨论】:

【参考方案1】:

它们可以在同一个控制器中,但是对于 Laravel,为项目、服务或任何 CRUD 操作创建不同的控制器是一种很好的做法。

如果您只想为项目和服务创建一个控制器,您必须创建像 store_itemstore_service 这样的函数,并且您必须使用每条路由(如 Route::post('items','YourController@store_item'); 和类似的服务)调用它们。

但是,如果您为ItemsServices 创建单独的控制器,则不必为每个任务或操作创建路由。您只需在您的路线文件中注册资源丰富的路线,一切顺利!

例如,如果您要为项目和服务创建单独的控制器,则只需在 Routes 文件中编写这两行即可!

Route::resource('items', 'ItemsController');
Route::resource('services', 'ServicesController');

所以,为 CRUD 操作创建控制器是件好事,因为它可以让 Laravel 中的东西变得整洁干净。如果您还有任何疑问,请告诉我!

【讨论】:

是的,这就是我到目前为止所做的。我已经注册了:Route::resource('/items', 'ItemsController'); Route::resource('/services', 'ServicesController');所以它自动创建了我想要的所有路线。所以这是正确的方法吗?因为正如我所见,我将不得不再创建大约 13 个控制器。这样可以吗? 是的,如果您为不同的实体创建不同的控制器,这很容易! 好的,我明白了。 (也许你没有看到它,因为我编辑了我的评论)我将不得不创建几乎 14 - 15 个控制器!你觉得还可以吗?

以上是关于Laravel - 使用控制器的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 - 如何使用其方法生成控制器

在 laravel 控制器中使用特征

如何使用更新资源控制器 laravel 4?

使用 Axios 从 laravel 控制器捕获错误

使用 JSON 请求正文测试 laravel 控制器

如何使用 laravel 在控制器内获取数据