Laravel路线和正确的工作流程

时间:2015-05-28 11:57:27

标签: php laravel coding-style standards

我刚刚进入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个控制器。我总是希望尽可能保持我的代码标准化(即使是一个单词),即使我是唯一正在处理它的人。我喜欢以正确的方式做事。

感谢您提供任何意见。

1 个答案:

答案 0 :(得分:2)

没有对错,两种方式都是有效的,虽然我更喜欢有一条路线,而不是一条带有通配符的路线并添加额外的逻辑。这似乎是错的,我向你保证,将来你会后悔的。

此外,我注意到您对执行典型的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');
});

这将是可用的路线: php artisan route:list

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

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