我試圖創建一個嵌套的Laravel路由信息的API URL結構如下所示:REST風格的嵌套Laravel路線
/api/v1/tables -- list tables
/api/v1/tables/<id> -- show one table data
/api/v1/tables/<id>/update (post) -- update table data (inline editing of table, so edit screen not needed)
/api/v1/tables/<id>/settings -- get settings for that table
/api/v1/tables/<id>/settings/edit -- edit settings for that table
/api/v1/tables/<id>/settings/update (post) -- save settings for that table
我試着用嵌套資源,兩個控制器這樣做。 TableController
(綁定到Table模型)將控制表中的數據,並且TableSettings
(綁定到TableSettings模型)控制器將控制設置(列名,順序,可視性等)。這個想法是,您將撥打/api/v1/tables/<id>
來獲取表格的數據並使/api/v1/tables/<id>/settings
獲得設置,然後使用它來構建顯示。
在我routes.php
我:
Route::group(array('prefix' => 'api/v1'), function()
{
Route::resource('tables', 'TablesController',
array('only' => array('index', 'show', 'update')));
Route::resource('tables.settings', 'TableSettingsController'.
array('only' => array('index', 'edit', 'update')));
});
我希望做一些事情來這種效果來跟上routes.php
儘可能乾淨。我遇到的問題是,當我嘗試點擊設置編輯或更新URL(/api/v1/tables/<id>/settings/<edit|update>
)時,它實際上是以/api/v1/tables/<id>/settings/<another_id>/edit
的形式查找URL。但我希望它使用表格的ID,而不是在URL中有全新的設置ID。
有沒有辦法以這種方式使用嵌套的資源控制器?或者我應該使用另一種方法?
不幸的是,沒有運氣與此有關。 '/ api/v1/tables/1/settings/edit'不起作用,但是'/ api/v1/tables/1/settings/1/edit'仍然有效。 – Samsquanch