2012-02-11 7 views
0

私はCakePHP 2.0でサイトを再構築しており、古いURLのいくつかを新しいものにルーティングする必要があります。私はデバッグする場合CakePHP 2.0 Router ::名前付きパラメータを渡す方法を接続します

Router::connect(
    '/widget/helpbox/location/mackay-qld', 
    array(
     'controller' => 'widgets', 
     'action' => 'answer', 
     'location_id' => 10542 
    ) 
); 

:たとえば、この:

http://www.example.com/widget/helpbox/location/mackay-qld

これまでウィルルート:

http://www.example.com/widgets/answer/location_id:10542

これを行うために、私は次のルートを持っています$ this-> request-> params、私はこれを得る:

012無駄に

Array 
(
    [plugin] => 
    [controller] => widgets 
    [action] => answer 
    [named] => Array 
     (
      [location_id] => 10542 
     ) 

    [pass] => Array 
     (
     ) 

    [isAjax] => 
) 

私も

Router::connectNamed(array('location_id')); 

を呼び出してみました...しかし:

は、しかし、私は、これは期待しています。 location_idは引き続き同じ方法で渡されます。名前付きのパラメータではありません。

誰でも正しい構文を知っていますか?

+0

これはバグかもしれません。 Cake2のメンバーに質問/報告することを検討してください。 http://ask.cakephp.org/およびhttp://cakephp.lighthouseapp.com/dashboardを参照してください。 – sibidiba

答えて

1

チケットを発行してチケットが無効であることを受けて、少し深く掘り下げられました。ついに何をする必要があるのか​​理解しています。インバウンドURLには指定されたパラメータが含まれていないため、ルート接続を実行しようとする方法にすることはできません。ルート接続は、特定の場所を新しい場所にルーティングする方法のテンプレートとして使用されます。しかし、あなたがしたいことは、特定のURLを新しいURLにルーティングすることです。あなたが探しているのはリダイレクトです。

Router::redirect(
    '/widget/helpbox/location/mackay-qld', 
    array(
     'controller' => 'widgets', 
     'action' => 'answer', 
     'location_id' => 10542, 
    ), 
); 

これは、あなたが探している結果を返すはずです。

+0

多くのありがとう@cdburgess。完璧に働いた! –

+0

聞いてうれしい!マークストーリーは私のバグを無効に設定することで正しい道を私に設定しました。笑。しかし、私はあなたのためにそれがうれしいです。 –

関連する問題