UNIX的なアレ

UNIX的なこととかいろいろ

routes.phpを書いた時の逆ルーティングとnamed paramterの挙動

routes.phpで書いたルーティングを、$html->linkなんかで逆ルーティングできるのはなかなか便利ですよね。サービスで使いたいURLを後から決めようってときも、routes.phpを変更するだけで簡単に対応できてしまいます。
しかし、named parameterを使った時にちょっと動作が上手くいかないことがあったのでメモ。

routes.php

<?php
Router::connect('/show/*', array('controller'=>'posts','action'=>'show'));

view/post/show.ctp

逆ルーティングがきかないパターン
<?= $html->link('link',array('controller'=>'posts','action'=>'show','param'=>$value)) ?>
逆ルーティングがきくパターン
<?= $html->link('link',array('controller'=>'posts','action'=>'show','param:'.$value)) ?>

こんな感じです。named paramterの値の渡し方を配列で渡すと逆ルーティングできなくなってしまうみたいです。うーん、何か設定がおかしいのかもしれません。とりあえずワークアラウンドはみつけたのでとりあえずはコレでいきますか。