URLが次のようになるように、cakephpでカスタムルートを構成しようとしています
/objects/id/action => ObjectsController.action() with params['id']=id
(これは、objects/id/action よりも論理的に意味をなさない /objects/action/id のような URL を持つ必要がないようにするためです)。
/objects/action で ObjectsController.action() をトリガーしたい (例: 追加、インデックス、検索)。
私のルート構成は次のようになります。
Router::connect('/:controller/:id',
array('action'=>'view'),
array(
':id' => '^[0-9]+$'
)
);
Router::connect('/:controller/:id/:action/*',
array('action'=>'view'),
array(
':id' => '^[0-9]+$',
':action' => '[A-Za-z0-9_\-]*'
)
);
これは(例えば)以下で動作します:
- /オブジェクト/54
- /オブジェクト/54/編集
- /オブジェクト/追加
しかし、一緒ではありません
- /オブジェクト/インデックス/ページ:2
ObjectsControllerでアクション「page:2」を定義する必要があるというエラーが表示されます... :id は数字のみに一致する必要があるため、確かに機能するはずです。