Laravel 路线和正确的工作流程
Laravel routes and correct workflow
我最近才开始接触 MVC 和 Laravel 并且对正确的处理方式有疑问。
假设我正在用它的 CMS 或类似的东西建立一个网站。
我有一个着陆页 www.website.com,CMS 位于 www.website。com/cms/
CMS有一个导航菜单,它的每一项代表数据库中的一个table。
假设 - 帐户 |文章 |菜单 - 单击每个项目应该会显示每个 table 中的记录列表。
要做到这一点,我:
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 tables,我将有一个 30 深的开关。但话又说回来,如果我有 30 个 tables,我也会有 30 个控制器。我总是想让我的代码尽可能标准化(甚至是一个词),即使我是唯一一个在处理它的人。我喜欢以正确的方式做事。
感谢您对此的任何意见。
好吧,没有对错之分,两种方式都有效,尽管我更喜欢有很多路由,而不是有一个带有通配符并添加额外逻辑的路由。这似乎是错误的,我向你保证,将来你会后悔的。
我还注意到您有兴趣进行典型的 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');
我最近才开始接触 MVC 和 Laravel 并且对正确的处理方式有疑问。
假设我正在用它的 CMS 或类似的东西建立一个网站。
我有一个着陆页 www.website.com,CMS 位于 www.website。com/cms/
CMS有一个导航菜单,它的每一项代表数据库中的一个table。
假设 - 帐户 |文章 |菜单 - 单击每个项目应该会显示每个 table 中的记录列表。
要做到这一点,我:
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 tables,我将有一个 30 深的开关。但话又说回来,如果我有 30 个 tables,我也会有 30 个控制器。我总是想让我的代码尽可能标准化(甚至是一个词),即使我是唯一一个在处理它的人。我喜欢以正确的方式做事。
感谢您对此的任何意见。
好吧,没有对错之分,两种方式都有效,尽管我更喜欢有很多路由,而不是有一个带有通配符并添加额外逻辑的路由。这似乎是错误的,我向你保证,将来你会后悔的。
我还注意到您有兴趣进行典型的 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');