人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CakePHP(1.3.6)でサイトを作っている初心者です。
下記の仕様で作成しているのですが、
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']に書き込んだりしたのですが、表示できず悩んでおります。
解決する方法をお知りの方は、ぜひお教えください。

よろしくお願いいたします。


●質問者: momotaro2
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tdoi
ベストアンサー

手っ取り早いのは、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ですよね?


momotaro2さんのコメント
ありがとうございます。 リダイレクトで対応して希望のURLになりました。 余談のところはその通りです。 丁寧な回答ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ