我应该如何在 Laravel 中构建我的路由和控制器?

Posted

技术标签:

【中文标题】我应该如何在 Laravel 中构建我的路由和控制器?【英文标题】:How should I structure my routes and controllers in Laravel? 【发布时间】:2020-05-21 22:35:11 【问题描述】:

我的页面上有两个按钮,每个按钮在单击时都有不同的行为。目前我的路由和控制器设置是这样的......

routes/web.php

Route::post('/users/button1clicked', 'UsersController@button1clicked');
Route::post('/users/button2clicked', 'UsersController@button2clicked');

app/http/controllers/UsersController.php

class UsersController extends Controller

    public function button1clicked(Request $request)
      //Do something


    public function button2clicked(Request $request)
      //Do something else

它可以工作......但我认为我的控制器没有遵循正确的约定,因为控制器应该只具有标准操作(索引、创建、存储、显示、编辑、更新、销毁)。

对我来说,构建此代码的更好方法是什么?

【问题讨论】:

【参考方案1】:

每个按钮的作用是什么?例如,如果按钮提交表单以“保存”实体(例如博客应用程序中的“帖子”),则表单操作可以指向PostController@store。如果按钮点击是为了显示一个 html 表单来创建一个帖子,那么它可以导致PostController@show。 Laravel 文档中的下表将对您有所帮助。 Route definitions conventions

另请参阅https://laravel.com/docs/7.x/controllers#restful-naming-resource-route-parameters。

如果您使用 ajax 或 axios 进行异步调用,那么您可以使用按钮事件(例如单击)调用函数,并且该函数可以发布帖子(或对相关控制器方法的任何其他异步调用(@ 987654325@)。如果你想要一个例子,请告诉我。

【讨论】:

如果我没有正确理解问题并且答案过于原始和明显,我深表歉意。看来您对MVC模式经验丰富,知识渊博,我只是新手。 不,我认为您已经正确理解了这个问题。 :) 我似乎最终得到的按钮似乎不符合惯例。例如,一个按钮启动一个从 API 获取值并将其显示在屏幕上的进程。

以上是关于我应该如何在 Laravel 中构建我的路由和控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 的单个控制器中传递多个路由

我应该将 Angularjs 文件保存在我的 Web 应用程序中的啥位置,我应该如何构建我的路由和资源? [关闭]

如何在不使用Eloquent ORM时构建Laravel应用程序

在 Laravel 中使用无需身份验证的 api 路由

有 Laravel 8 路由和控制器问题

Laravel:如何在路由中传递单个 ID