メイン 一般的な話題(General)
Routes::connect設定時の$form->createや$html->linkの挙動について | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| peston | 投稿日時: 2008-9-16 2:19 |
Baker スタート ![]() ![]() 登録日: 2008-9-16 居住地: 投稿: 3 |
Routes::connect設定時の$form->createや$html->linkの挙動について お世話になっております。
CakePHP1.2において、モバイル版のページを作成するため 先ずは動作テストのため、CakePHPの公式マニュアルに存在するプリフィックスルーティングの項を元に app/config/routes.phpに Router::connect('/profiles/:controller/:action', array('prefix' => 'profiles')); と、ルーティングを設定し URLの指定に、/profiles/controller/action で動作することを確認したのですが その際、以下の現象が発生し困っております。 「users/index」のviewで指定したヘルパー $html->link('Edit your profile', array('controller' => 'users', 'action' => 'edit')); は「http://localhost/profiles/users/edit」 となる。 $form->create( 'users', array('action'=>'edit') ) は profilesコントローラーを探しに行く。 問題点としては、profilesをURLに含まないページで 勝手にprofilesが指定されます。 環境設定などの問題か、と思い CakePHP1.2の公式ドキュメントを元に、1から構築してみましたが 状況は変わりませんでした。 どなたか、同様の事例を解決された方がおられましたら ご教授いただけましたら幸いです。 よろしくお願いいたします。 --開発環境-- Windows Vista Xampp 1.6.7 -Apache 2.2.9 -Loaded Modules mod_rewite -PHP 5.2.6 |
| hide99 | 投稿日時: 2008-9-16 6:30 |
一人前 ![]() ![]() 登録日: 2007-7-2 居住地: 投稿: 106 |
Re: Routes::connect設定時の$form->createや$html->linkの挙動について 僕も携帯対応サイトいくつか作りましたが
根本的にルート設定が間違っているような。 僕の場合は http://www.hoge.com/m/ がモバイル用URLなので と設定してあります。 array('prefix' => 'profiles') というのが間違っていると思いますよ。 |
| peston | 投稿日時: 2008-9-16 8:37 |
Baker スタート ![]() ![]() 登録日: 2008-9-16 居住地: 投稿: 3 |
Re: Routes::connect設定時の$form->createや$html->linkの挙動について hide99さん
お返事ありがとうございます。 array('prefix' => 'profiles') としたのは、できるだけ公式ドキュメントに忠実にテストしてみよう という趣旨からくるものでした。 prefixの設定は も含め、ほかにも 色々試してみたのですが、状況は変わりませんでした。 |
| shun | 投稿日時: 2008-9-16 11:04 |
Cake 職人 ![]() ![]() 登録日: 2006-7-14 居住地: 東京、日本 投稿: 1007 |
Re: Routes::connect設定時の$form->createや$html->linkの挙動について コード試していないんですが、下記のページを見ると、
http://book.cakephp.org/ja/compare/544/ 英語版はすでに というパラメータが追加されているみたいですね。 *最新の内容に訳し直しておきました。* |
| ohguma | 投稿日時: 2008-9-16 11:12 |
Baker 常連 ![]() ![]() 登録日: 2006-10-23 居住地: 投稿: 66 |
Re: Routes::connect設定時の$form->createや$html->linkの挙動について 根本的な解決案ではないのですが、URLを配列でなく、文字列で指定するようにしたら意図する動作をしませんか?
user/indexビューなら、 $html->link('Edit your profile', '/users/edit'); もしくは $html->link('Edit your profile', 'edit'); |
| peston | 投稿日時: 2008-9-16 22:46 |
Baker スタート ![]() ![]() 登録日: 2008-9-16 居住地: 投稿: 3 |
Re: Routes::connect設定時の$form->createや$html->linkの挙動について shunさん
★解決いたしました、ご教授ありがとうございます。 英語版のドキュメントはよく確認しておりませんでした。 ドキュメントを確認したところ、仰るとおり Router::connectの第二引数が array('prefix' => 'profiles', 'profiles' => true) となっていることを確認いたしました。 ■これに則りroutes.phpのプリフィックスルーティングの設定をドキュメント通り としたところ、$form->create および $html->linkについて 正常に動作し、本件を解決することができました。 ■英語が苦手なので、細部のドキュメントまで確認ができませんでしたが $html->linkに関しては以下のようになっておりました。 'profiles' => true とすることで、profilesをprefixとして動作するようです。 ※翻訳のほう、反映されておりますでしょうか? 確認してみたのですが反映されていないような気がします。 当方ではどうしようもできないので、言うだけになってしまい申し訳ございません。 ================================================================================ ohgumaさん ありがとうございます。 申し上げるのを忘れておりましたが 私も、仰る方法でひとまずのところしのぐ事ができたので 最近までその方法を使用していました。 ただ、以下の2点からこの問題は必ず解決する必要があると考えました。 ・ルーティングに関してはシステムの根幹となるので不安を持ちたくない ・他者のコンポーネントなどを使用する際、修正する手間が発生する もしこの問題が解決しなかった場合、プリフィックスルーティングを使用せず 専用コントローラーを実装することを考えておりました。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |





