ここでの理解またはコードに何かが欠けています...
カテゴリを一覧表示/追加/編集/削除するための非常に基本的な CRUD アプリがあり、テーブルの主キーを「id」として定義すると正常に動作しますが、データベース列の名前を「categoryId」に変更すると、 PUT url にキー値が含まれておらず、処理されていないパスの 404 エラーが発生します...
スタック:
IIS 7.5 と RESTful サービス用の Slim PHP
// Route excerpt
...
when('/categories', {templateUrl: 'partials/categoryList.html', controller: CategoryListCtrl}).
when('/categories/new', {templateUrl: 'partials/categoryDetail.html', controller: CategoryNewCtrl}).
when('/categories/:id', {templateUrl: 'partials/categoryDetail.html', controller: CategoryEditCtrl}).
...
angular.module('myServices', ['ngResource'])
.factory('Category', function($resource){
return $resource('../api/index.php/categories/:id', {id:'@categoryId'},
{ update: {method:'PUT' } }
);
})
// WORKS when attribute is 'id'
.factory('Category', function($resource){
return $resource('../api/index.php/categories/:id', {id:'@id'},
{ update: {method:'PUT' } }
);
})
// FAILS with 404 when attribute is 'categoryId'
.factory('Category', function($resource){
return $resource('../api/index.php/categories/:id', {id:'@categoryId'},
{ update: {method:'PUT' } }
);
})
もちろん、名前が変更されたコードには他にも多くの場所がありますが、私が見ている効果は ngResource に関連しているようです。
最初の方法は、機能する URL を生成します...
categories/1?description=null&name=Observation&report=null
/api/index.php
2番目はこれを生成します...
categories?categoryId=1&description=null&name=Observation&report=null
/api/index.php
パスの形式が正しくないため、404 エラーが発生します。
名前を変更した属性を URL で使用するために必要な別のパラメーター (またはディレクティブなど) はありますか?