.ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録

.検索

.メインメニュー

.フォーラムメニュー

.オンライン状況
14 人のユーザが現在オンラインです。 (14 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 14

もっと...

.
.リンク集

メイン
   一般的な話題(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なので


Router::connect('/m/:controller/:action', array('prefix' => 'm'));


と設定してあります。

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の設定は
Router::connect('/m/:controller/:action', array('prefix' => 'm'));

も含め、ほかにも
色々試してみたのですが、状況は変わりませんでした。


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/

英語版はすでに

<?php
'profiles' => true
?>




というパラメータが追加されているみたいですね。
*最新の内容に訳し直しておきました。*
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のプリフィックスルーティングの設定をドキュメント通り
Router::connect('/profiles/:controller/:action', array('prefix' => 'profiles', 'profiles' => true)); 

としたところ、$form->create および $html->linkについて
正常に動作し、本件を解決することができました。



■英語が苦手なので、細部のドキュメントまで確認ができませんでしたが
$html->linkに関しては以下のようになっておりました。
$html->link('Edit your profile', array('controller' => 'users', 'action' => 'profiles_edit', 'profiles' => true));

'profiles' => true とすることで、profilesをprefixとして動作するようです。

※翻訳のほう、反映されておりますでしょうか?
確認してみたのですが反映されていないような気がします。
当方ではどうしようもできないので、言うだけになってしまい申し訳ございません。


================================================================================

ohgumaさん

ありがとうございます。

申し上げるのを忘れておりましたが
私も、仰る方法でひとまずのところしのぐ事ができたので
最近までその方法を使用していました。

ただ、以下の2点からこの問題は必ず解決する必要があると考えました。

・ルーティングに関してはシステムの根幹となるので不安を持ちたくない
・他者のコンポーネントなどを使用する際、修正する手間が発生する

もしこの問題が解決しなかった場合、プリフィックスルーティングを使用せず
専用コントローラーを実装することを考えておりました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


. .