1

CakePHP のルーティングについては、

Router::connect(
    '/:controller/:id',
    array('action' => 'view'),
    array('id' => '[0-9]+')
);

これは、 http://www.mywebsite.com/controller/view/idである任意の URL にマップされます。

しかし、 http://www.mywebsite.com/controller/id/actionである URL をマッピングするのはどうですか?

例: http://www.mywebsite.com/classes/3/create/2

クラスコントローラーの作成機能では、

パラメータ $id (この場合は 3) と $count (この場合は 2) を受け取ります。

public function create( $id, $count ) {
    ....
    // i can here create a total number of $count students
    // and assign them class_id $id

    // so  student1.class_id = 3
    // and student2.class_id = 3
}

そして、私は試しました、

Router::connect(
'/:controller/:id/:action',
    array('id' => '[0-9]+'),
    array('count' => '[0-9]{,2}')
);

それは私にはうまくいきませんでした。

4

1 に答える 1

0

Cakeがidとcountをコントローラーアクションに渡すには、ルートに引数が渡されたことを知らせる必要があります。これを行うには、passそれらを渡す順序で最後のオプションの配列に含めます。

あなたも:countあなたのルートで行方不明だったので、あなたがカウントを通過した場合、それは一致しませんでした。

新しいルートは次のようになります。

Router::connect(
    '/:controller/:id/:action/:count',
    array(),
    array(
  'pass' => array('id', 'count'),
  'id' => '[0-9]+',
      'count' => '[0-9]{,2}'
)
);
于 2013-02-16T00:38:31.303 に答える