0

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 は数字のみに一致する必要があるため、確かに機能するはずです。

4

1 に答える 1

0

2 番目のパラメータから「:」を削除してみてください。

'id'       =>  '^[0-9]+$'

'pass' オプションも参照してください。

@「cakephpルート」でGoogleを参照してください:

于 2011-09-23T14:34:12.213 に答える