下記の仕様で作成しているのですが、
1.一覧をクリックするとデフォルトで今月の発売商品の一覧を表示
2.セレクトボックスで西暦+月のリストから発売月を選択し、発売商品の一覧を表示
1.の場合には、
$html->link("一覧", array('controller' => 'items', 'action' => 'list', date("Y") . date("m")), array('escape' => false), false, false);
で、urlが希望通り items/month/201210 となります。
2.の場合には、
$form->create('item',array('type'=>'post', 'url' => array('action'=>'./list')));
$form->select('ym',array($selectym), null, array('empty'=>'発売年月[選択]'));
$form->submit("/img/search.png", array('class' => "", 'name' => 'nengetu'));
$form->end();
で、選択した年月の商品一覧は表示できるのですが urlがitems/month/ となります。
このurlを 1.と同様の items/month/yyyymm として表示させたいのです。
params['pass']に書き込んだりしたのですが、表示できず悩んでおります。
解決する方法をお知りの方は、ぜひお教えください。
よろしくお願いいたします。
手っ取り早いのは、Cakeの仕組みから離れて、JavaScriptで、selectボックスの変更イベントを拾って、formのactionを書き換えてあげればいいかと。
逆に言うと、Cakeの仕組みだけではできません。やるとすれば、items/month/にアクセスされた際に、そのような状態だとリダイレクトしてやるとかしかないかと。おおよそ、次のような感じですかね。
class ItemsController { function list($ym = null) { if ($ym == null && !empty($this->data['Item']['ym'])) { $this->redirect(array('action' => 'list', $this->data['Item']['ym'])); exit; } ・・・以下、検索など・・・ } }
余談ですが、
$html->link("一覧", array('controller' => 'items', 'action' => 'list', date("Y") . date("m")), array('escape' => false), false, false);
だと、items/month/201210ではなく、items/list/201210ですよね?
ありがとうございます。
2012/10/03 20:27:29リダイレクトで対応して希望のURLになりました。
余談のところはその通りです。
丁寧な回答ありがとうございました。