我正在寻找一些关于我使用的路由名称和视图目录结构的命名惯例的意见。
比如说,我有以下几个途径。
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
- 视图目录的复数 team
没有被使用,所以当我有其他视图时,像这样(使用原来的例子约定)。resources/views/teams/choose.index
他们在视觉上没有预期的关系。即它们有一个不同的 "根 "目录----。teams
与 team
.
如果有任何意见或建议,我将非常感激。
对于
get
路由,我通常会把视图放在一个与路由名称相匹配的目录结构中。例如resources/views/teams/team/manage/index.blade.php
. 但是,我觉得这样太啰嗦了。
我同意这种做法。
从 Laravel docs:
Laravel在给控制器分配资源路由时使用了典型的RESTful "CRUD "方法。每个 动词 (即GET, POST, PUT, DELETE)得到一个指定的 通用资源识别号,一个 行动 (技术上讲,是一种控制器方法)和一个。路名 (有时。/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');
我用了这个 资源表 来时刻提醒我该做什么,不该做什么。
也许,检查一些 厉害的Laravel代码库,可能会有帮助。另外,对其他团队如何做事情的看法总是无价的。
我发现这些都是非常有帮助的。
更新
关键是要坚持标准的CRUD操作,即索引、显示、创建、存储、编辑、更新和删除。视图将落在他们的位置上。
查看 Adam Wathan在Laracon EU的演讲 因为他演示了如何。无坚不摧 有一点想象力。
有这么多的方法来维护基于需求的路由,但我总是遵循下面的准则,这有助于我维护文件结构和易于理解。
//listing
Route::get('/teams', 'TeamController@index');
//Create
Route::get('/teams/create', 'TeamController@create');
//Store
Route::post('/teams/store', 'TeamController@store');
//Show
Route::get('/teams/{id}', 'TeamController@show');
//Edit
Route::get('/teams/{id}/edit', 'TeamController@edit');
//Update
Route::put('/teams/{id}/update', 'TeamController@update');
//Delete
Route::delete('/teams/{id}/delete', 'TeamController@delete');
更多有关正确的命名惯例的信息,你可以按照下面的链接。
https:/laravel.comdocs7.xcontrollers#restful-nested-resources。