【问题标题】:Laravel routes and correct workflowLaravel 路线和正确的工作流程
【发布时间】:2015-05-28 11:57:26
【问题描述】:

我最近刚刚接触到 MVC 和 Laravel,并且有一个关于处理事情的正确方法是什么的问题。

假设我正在使用它的 CMS 或类似的东西构建一个网站。

我有一个登录页面 www.website.com,CMS 位于 www.website.com/cms/

CMS 有一个导航菜单,每个项目代表数据库中的一个表。

假设 - 帐户 |文章 |菜单 - 单击每个项目应显示每个表中的记录列表。

我要这样做:

a) 有路线

Route::get('cms/{requestedtable}', 'PagesController@CmsCreate');

在这条路上我会

switch($requestedtable)
   case 'accounts';
      $data = Account::all();
   case 'menu'
      $data = Menu::all();

b) 每个项目都有一条路线

Route::get('cms/accounts/', 'AccountController@index');

public function index() {

   Account::all()

插入、更新和删除也是如此。为每个事件创建一个路线会更正确吗

Route::get('cms/accounts/', 'AccountController@index');
Route::get('cms/accounts/create', 'AccountController@create');
Route::get('cms/accounts/update', 'AccountController@update');

或者只有一条路线但使用不同的功能

Route::get('cms/{{requestedtable))/update', 'PageController@CmsUpdate');

我担心动态选项是,如果我有 30 张桌子,我将有一个 30 深的开关。但话又说回来,如果我有 30 个表,我也会有 30 个控制器。我总是希望我的代码尽可能地标准化(甚至是一个词),即使我是唯一一个在处理它的人。我喜欢以正确的方式做事。

感谢您对此的任何意见。

【问题讨论】:

    标签: php laravel coding-style standards


    【解决方案1】:

    好吧,没有对错之分,两种方式都有效,尽管我更喜欢拥有很多路线,而不是拥有一条带有通配符的路线并添加额外的逻辑。这似乎是错误的,我向你保证,将来你会后悔的。

    我还注意到您对执行典型的 CRUD 操作感兴趣,使用 Resource Controller 是保持 routes.php 干净的好方法。请注意,尽管资源控制器通常用于 REST API,但您可以在任何 Web 应用程序中使用它们。

    这就是你的 routes.php 的样子:

    Route::group(['prefix' => 'cms'], function()
    {
      Route::resource('Accounts','AccountsController');
      Route::resource('Articles','ArticlesController');
      Route::resource('Menu','MenuController');
    });
    

    这将是可用的路线:

    请注意,您还可以在资源控制器上使用通配符,如 here 所述:

    Route::resource('{resource}', 'PagesController');
    

    【讨论】:

    • 写完这篇文章 2 分钟后,我转到了 Laracasts 的下一集,它是关于路线和资源的。这是一个优雅的解决方案,我将采用!谢谢。
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多