2011-01-20 5 views
1

CakePHP v1.3.7で安定したアプリケーションを開発しています。 URL:my.domain/u/ididがデータベース内のユーザーのIDである単純なユーザープロファイルページを生成したいと考えています。CakePHP 1.3.7設定されたURLの代わりにデフォルトのURLを返す逆ルーティング

だから私は、アプリ/設定/ routes.phpの中でこれを書いた(とのみ):

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

私はブラウザでmy.domain/U/120を入れたときに上記のコードは、正常に動作します私はHTMLヘルパーを使用してこのページへのリンクを作成しようとすると、それは、利用者120

のプロファイルを示している。しかし:

// some code in a view 
$this->html->link('Test', array('controller'=>'Users', 'action'=>'profile', 120)) 

HTMLヘルパー(でやって詩ルーティング、私は思う)defautのCakePHPのフォームでURLを生成します。routes.phpの中の設定に基づいて<a href="https://stackoverflow.com/users/profile/120">Test</a>

それは次のようになります。<a href="/u/120">Test</a>、右?

私に何か不足していますか?

ありがとうございました。

+0

また、 'controller' => 'users' lower-caseを実行する必要があります。もしあなたがURLに 'id' => $ idを入れたくなければ、ルータ:: connect( '/ u/*' ....)へのルートを変更したいのであれば、 – dogmatic69

答えて

1

これを試してみてください:

$this->html->link('Test', array('controller'=>'Users', 'action'=>'profile', 'id'=>120)) 

私は逃した 'idは' それを修正します願っています。

+0

を読んでください。 – dogmatic69

+0

"id" => $ id、レンダリング: 'Test'、これは '/ u/id'から遠く離れていても、どうもありがとうございます:) – DenJohX

0

最後に、dogmatic69のおかげで、ルートのID関連コードが削除されました。私はroutes.phpの中にこれで終わり

Router::connect('/u/*', 
    array('controller' => 'users', 'action' => 'profile') 
); 

今、HTMLヘルパーが期待と同じように動作します:

echo $this->html->link('Test',array(
    'controller'=>'users', 
    'action'=>'profile', 
    100 
)) 

// renders: <a href="/u/100">Test</a> 

欠点は、私は正規表現を利用することができないということです初期ルートコードのように、ルータのフィルタ。

関連する問題