1

CakePHP でコントローラーのルーティングを実行しようとしています。

私のコントローラーは UserGames と呼ばれます。デフォルトの CakePHP ソートコード:

<?php echo $this->Paginator->sort('price'); ?>

デフォルトでは、並べ替えリンクは次のようになります。userGames/index/sort:name/direction:asc

次のルーティング ルールを追加しました。

Router::connect('/games', array('controller' => 'UserGames', 'action' => 'index'));
Router::connect('/games/:sort/:direction', array('controller' => 'UserGames'));

これらの並べ替えリンクを使用すると、次のような URL が生成されます。games/name/asc

この方法では並べ替えは機能せず、$this->PassedArgs は空です。私の間違いは何ですか?

4

1 に答える 1

0

名前付きパラメーターを passedArgs で渡された引数として使用できるようにする場合は、2 番目の Router::connect 呼び出しに 3 番目のパラメーターを指定する必要があります。

Router::connect('/games/:sort/:direction',
    array('controller' => 'UserGames'),
    array('pass' => array('sort', 'direction')));

この場合、$this->passedArgs[0]がソート値に$this->passedArgs[1]なり、 が方向値になります。

詳細については、CakePHP のドキュメントを参照してください。

于 2012-09-18T18:49:50.933 に答える