その他 > その他 > LC_Page::sendRedirect()の$urlにGETパラメータを渡せない |
その他
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
hatarakuwe |
投稿日時: 2010/3/11 11:16
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2008/11/4 居住地: 沖縄県 投稿: 26 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない こんにちは。hatarakuwebと申します。
ちょうど、CMS機能強化としてコンテンツページの動的生成機能を実装していて、 同様の問題に悩んでおりましたが、 このスレッドのmmmmmさんの改善策にてとりあえず対応できました。 大変参考になりました。ありがとうございました。 |
seasoft |
投稿日時: 2010/2/26 22:56
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7342 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない > せっかくNet_URL使ってるのですから、
> 自力で'?a='.urlencode($a).'&b='.urlencode($b)とか > 書かずに済ませられるのであればそれにこしたことはないんじゃないかと個人的には思います。 排他的なものでは無いと思うので、mmmmm 様が冒頭で書かれているソースで生成する内容を追加パラメータ($variable)の内容で追加すれば良いと思いますよ。 少なくとも、既存の HTTP リクエストのパラメータ有無によって動作が変わってしまう仕様は良くないですね。
|
nanasess |
投稿日時: 2010/2/26 22:20
対応状況: −−−
|
神 ![]() ![]() 登録日: 2006/9/9 居住地: 投稿: 2288 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない そうですね...
基本的な振舞いは, Java の HttpServletResponse#sendRedirect(String) に, できるだけ準拠したいと思いますので, ちょっと実装方法を考えてみます. |
mmmmm |
投稿日時: 2010/2/25 22:59
対応状況: −−−
|
新米 ![]() ![]() 登録日: 2010/2/3 居住地: 投稿: 7 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない >渡したいパラメータを $_SERVER['QUERY_STRING'] に代入してしまうというのは無しですか?
まあ、今回の問題を解決するだけならそれで全然かまわないですが、 チュートリアルとかがどこかにあったとして、 「任意のGETパラメータつきでリダイレクトしたい場合、$_SERVER['QUERY_STRING']に代入してください」 とか書いてあったら私ならちょっと引きます。 >個人的には、mmmmm 様が冒頭で書かれているソースでも、良いのかなという印象です。 せっかくNet_URL使ってるのですから、 自力で'?a='.urlencode($a).'&b='.urlencode($b)とか 書かずに済ませられるのであればそれにこしたことはないんじゃないかと個人的には思います。 自分で書いておいてなんですが。 #&が&になってしまう… |
seasoft |
投稿日時: 2010/2/25 12:43
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7342 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない とりあえず、チケットを差し戻しました。
http://svn.ec-cube.net/open_trac/ticket/608#comment:2
|
seasoft |
投稿日時: 2010/2/25 12:38
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7342 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない > リダイレクトする前のリンクに一切クエリストリングが無いと
> Net_URL::addRawQueryString()が走らないのでそのせい、とかではないでしょうか? > ・<a href="a.php"> →発生しない > ・<a href="a.php?a=1"> →発生する 仰っている意味が分かりました。 HTTP リクエスト時に、パラメータ(クエリーストリング)を渡しているかで、動作が変わるということですね。 確かに、その通りです。 個人的には、mmmmm 様が冒頭で書かれているソースでも、良いのかなという印象です。
|
nanasess |
投稿日時: 2010/2/23 10:50
対応状況: −−−
|
神 ![]() ![]() 登録日: 2006/9/9 居住地: 投稿: 2288 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない 引用:
渡したいパラメータを $_SERVER['QUERY_STRING'] に代入してしまうというのは無しですか? |
mmmmm |
投稿日時: 2010/2/23 8:26
対応状況: −−−
|
新米 ![]() ![]() 登録日: 2010/2/3 居住地: 投稿: 7 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない >$_SERVER['QUERY_STRING'] に含まれない GET パラメータを渡したい
です。 私がこのメソッドに期待していた動作が Symfonyの$this->redirect(array('module' => 'foo', 'action' => 'bar', 'hoge' => 'fuga'));や CakePHPの$this->redirect('foo/bar/hoge/fuga');だったので、 任意の引数を渡せるものだと思っていました。 #転送前のリクエストパラメータが勝手に付加されるのも上記とは違いますがまあスルーで >foo.tplで > <a href="foo.php?a=1">bar</a> 今回、 if($foo){ LC_Page::sendRedirect('bar.php?hoge=1'); }else{ LC_Page::sendRedirect('bar.php?hoge=2'); } みたいなことを行いたかったので実装時に困ったのです。 引数の数なんかを変更すると影響範囲が大きそうだったので今回は手っ取り早く修正しましたが、 一番いいのは function sendRedirect($url, $isMobile = false, $variable=array() ) ではないかと思います。 >最新コミュニティ版で、 >$this->sendRedirect($this->getLocation(URL_CART_TOP) . '?a=1'); >を試しましたら、正常に動作しますね。 あれ? ソース見る限り駄目っぽい気がするんだけどなあ…? リダイレクトする前のリンクに一切クエリストリングが無いと Net_URL::addRawQueryString()が走らないのでそのせい、とかではないでしょうか? ・<a href="a.php"> →発生しない ・<a href="a.php?a=1"> →発生する |
seasoft |
投稿日時: 2010/2/23 1:17
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7342 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない 最新コミュニティ版で、
$this->sendRedirect($this->getLocation(URL_CART_TOP) . '?a=1'); を試しましたら、正常に動作しますね。 チケットは再現不能として、一旦クローズしました。 http://svn.ec-cube.net/open_trac/ticket/608#comment:1
|
ramrun |
投稿日時: 2010/2/22 9:54
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: LC_Page::sendRedirect()の$urlにGETパラメータを渡せない 現状は例えば
foo.tplで <a href="foo.php?a=1">bar</a> foo.phpで LC_Page::sendRedirect('bar.php') とすれば bar.php?a=1 となるんじゃないでしょうか? テンプレート側でパラメータを書くか、コード内にパラメータを書くかの違いだとは思いますが... これって相対パスでもOKにするっていうことじゃないですよね? PHPがCGIで動作している場合は挙動が少々違うみたいです。 |
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |