我有三个模型:User、Lesson和Hotspot。一个课程拥有许多热点,一个用户拥有许多课程。将来,我可能会允许用户访问其他用户的课程,但这是我稍后会做出的决定。因此,为了创建一个新用户,我转到"/user/create"。要创建新课程,请转到"/user/1/create"。要创建一个新的热点,我转到"/user/1/session/1/photot/create"。当我创建一个新的热点时,在我的热点控制器中,我必须为每个CRUD操作询问"用户拥有这个吗?"。
我这样做是正确的,还是错误的?
以下是我的路线(注意:uid==用户id,lid==课程id,hid==热点id)
// User CRUD routes
Route::get('/user', 'UserController@index');
Route::get('/user/create', 'UserController@create');
Route::post('/user/create', 'UserController@store');
Route::get('/user/{uid}', 'UserController@show');
Route::get('/user/{uid}/edit', 'UserController@edit');
Route::post('/user/{uid}/edit', 'UserController@update');
Route::post('/user/edit', 'UserController@update');
Route::post('/user/{uid}/delete', 'UserController@destroy');
// Lesson CRUD routes
Route::get('/user/{uid}/lesson/', 'LessonController@index');
Route::get('/user/{uid}/lesson/create', 'LessonController@create');
Route::post('/user/{uid}/lesson/create', 'LessonController@store');
Route::get('/user/{uid}/lesson/{lid}', 'LessonController@show');
Route::get('/user/{uid}/lesson/{lid}/edit', 'LessonController@edit');
Route::post('/user/{uid}/lesson/{lid}/edit', 'LessonController@update');
Route::post('/user/{uid}/lesson/edit', 'LessonController@update');
Route::post('/user/{uid}/lesson/{lid}/delete', 'LessonController@destroy');
// Lesson CRUD routes
Route::get('/user/{uid}/lesson/{lid}/hotspot', 'HotspotController@index');
Route::get('/user/{uid}/lesson/{lid}/hotspot/create', 'HotspotController@create');
Route::post('/user/{uid}/lesson/{lid}/hotspot/create', 'HotspotController@store');
Route::get('/user/{uid}/lesson/{lid}/hotspot/{hid}', 'HotspotController@show');
Route::get('/user/{uid}/lesson/{lid}/hotspot/{hid}/edit', 'HotspotController@edit');
Route::post('/user/{uid}/lesson/{lid}/hotspot/{hid}/edit', 'HotspotController@update');
Route::post('/user/{uid}/lesson/{lid}/hotspot/{hid}/edit', 'HotspotController@update');
Route::post('/user/{uid}/lesson/{lid}/hotspot/{hid}/delete', 'HotspotController@destroy');
使用嵌套资源。
路由::资源('user.classe',LessonController');
你可以随心所欲地深入。
假设您正在构建某种API。
考虑到这一点,您并不真正需要/create
、/edit
和/delete
部件:所有这些都可以通过使用适当的HTTP方法来解决。