路由和查看命名约定

时间:2017-01-01 11:34:59

标签: laravel naming-conventions

我正在寻找关于我用于路由名称和视图目录结构的命名约定的一些输入。

说我有以下路线:

Route::get('/teams/choose', 'ChooseTeamController@index')->name('teams.choose.index');

Route::post('/teams/choose', 'ChooseTeamController@choose')->name('teams.choose');

Route::get('/teams/{team}/manage', 'ManageTeamController@index')->name('teams.team.manage.index');

对于get路由,我会将视图放在与路由名称匹配的目录结构中。例如。 resources/views/teams/team/manage/index.blade.php。但是,我觉得这太冗长了。

我觉得如果我要使用像这样的视图目录结构,而不是最后一个例子,那么全面(对我自己和其他开发人员)会感到困惑:resources/views/team/manage/index.blade.php - {{1}的复数形式我没有使用,所以当我有其他视图时(使用原始示例约定):team他们在视觉上没有预期的关系。即他们有一个不同的“根”目录 - resources/views/teams/choose.index vs teams

任何意见或建议都将不胜感激。

3 个答案:

答案 0 :(得分:17)

  

对于get路由,我通常会将视图放在与路由名称匹配的目录结构中。例如。 resources/views/teams/team/manage/index.blade.php。但是,我觉得这太冗长了。

我同意。

来自Laravel docs

在为控制器分配资源路由时,Laravel使用典型的RESTful“CRUD”方法。每个动词(即GET,POST,PUT,DELETE)获得指定的 URI 操作(技术上,控制器方法)和< strong>路由名称(有时候,/path/to/blade/view)。

所以,从您的代码段开始:

// return view(teams.index)
Route::get('/teams', 'TeamController@index');

// return view(teams.create)
Route::get('/teams/create', 'TeamsController@create');

// redirect('/home');
Route::post('/teams', 'TeamController@store');

// return view('teams.profile')
Route::get('/teams/profile', 'TeamController@profile')->name('profile');

我使用这个resource table来提醒我一直做什么,不做什么不做。

也许,检查一些awesome Laravel codebases可能有所帮助。另外,关于其他团队如何做事的观点总是无价的。

我发现这些非常有帮助:

<强>更新

关键是要坚持标准的CRUD动作,即索引,显示,创建,存储,编辑,更新和删除。观点将落在他们的位置。

查看Adam Wathan's talk at Laracon EU,因为他用一点点想象力来演示如何,任何事情都可以是CRUDDY

答案 1 :(得分:3)

有很多方法可以根据需求维护路由,但是我始终遵循以下准则,这有助于我维护文件结构并易于理解。

tidyverse

有关正确命名约定的更多信息,请点击以下链接

https://laravel.com/docs/7.x/controllers#restful-nested-resources

答案 2 :(得分:0)

如果您在构建时关注 api 消费,则不需要 createedit 形式,因此端点可以减少为:

//listing
Route::get('/teams', 'TeamController@index');

//Store
Route::post('/teams', 'TeamController@store');

//Show
Route::get('/teams/{id}', 'TeamController@show');

//Update
Route::put('/teams/{id}', 'TeamController@update');

//Delete
Route::delete('/teams/{id}', 'TeamController@delete');