質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

734閲覧

redirect先でデータを受け取った際に、文字化けが起きてしまう

toll_tree

総合スコア199

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

3グッド

0クリップ

投稿2019/07/15 06:02

編集2019/07/15 09:53

Redirectした際の挙動について、お聞きしたいことがあります。
フォームより送られた値をコントローラーのcomplete_reservationアクションで受け取り、リダイレクトしたとします。

public function complete_reservation(Request $request){ return redirect('/reserve/complete/display')->getRequest()->input(); }

リダイレクト先へは、ルーティングで(web.php)にて以下のコードで繋げます。

Route::get('/reserve/complete/display','ReserveController@complete_display');

complete_displayメソッドは以下になります。

public function complete_display(Request $request){ // dd($request->all()); $a = redirect('/reserve/complete/display'); dd($a); // dd($a->getRequest()->input()); }

こちらの結果は以下になります
イメージ説明
問題点としましては、complete_reservationメソッド内でdd(redirect('/reserve/complete/display')->getRequest()->input());とした際には文字化けしていなかったデータがcomplete_displayメソッド内では上記画像の通り文字化けしてしまっているという点です。
文字化けしている原因が分からないのですが、何故文字化けが起こってしまっているのでしょうか?
追記➀
complete_reservationメソッド内でdd(redirect('/reserve/complete/display')->getRequest()->input());とした際の実行結果は以下になります。
イメージ説明
追記➁
追記させて頂きました画像は、以下のコードより修正を行った際の実行結果となります。

public function complete_reservation(Request $request){ dd(redirect('/reserve/complete/display')->getRequest()->input()); return redirect('/reserve/complete/display')->getRequest()->input(); }

他の部分のコード(complete_displayメソッド)及び(web.php)に関しましては修正を加えていません。

aae_11, newyee👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/15 07:10 編集

>文字化けしている原因が分からないのですが、何故文字化けが起こってしまっているのでしょうか? に対して「dd()による出力の仕様」という回答がついていて「問題は何も起きていない」ことが明らかなのに何を続けたいのでしょうか。暇つぶしたいだけなら一人でやってください。
m.ts10806

2019/07/15 07:22

結局何が問題なのでしょうか。 「文字化けではない」というのは理解できたのでしょうか(でないと話になりません) 処理を進めていく上で不都合があるのでしたらそれを記載すべきです。 redirect()の返り値を自分で処理するなんてことフレームワークではあり得ないことです。興味本位ならそう書かないと「何の問題もないのに騒いでるんだこいつは」という印象しかありませんよ? 「なぜなぜ」を追求するならコアソース読み込みしかありません。それを人に依頼するようなことはしてはいけません。読めないなら単に基礎が足りてないだけです。勉強してください基礎を。
morumaru

2019/07/16 02:00

露骨な低評価打消し高評価は笑う
guest

回答2

0

ベストアンサー

$aがdd時にtoStringされて内部的にjson_encodeされてるだけなのでは?

投稿2019/07/15 06:09

編集2019/07/15 07:52
mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toll_tree

2019/07/15 06:20

ご回答ありがとうございます。 dd時に、json_encodeされているのではないかというご指摘なのですが、だとしますとcomplete_reservationメソッド内でdd(redirect('/reserve/complete/display')->getRequest()->input());とした場合でも文字化けを起こしてしまうのではないかと思うのですが、その点につきましてはいかがでしょうか?
m.ts10806

2019/07/15 06:42 編集

これを文字化けと解釈していてはプログラミングは出来ないと思います。 echo json_encode("りんご"); 今回の質問者に限らずこれを「文字化け」と解釈する質問が多くの人からあがっていて、問題が起きていないのに問題だとしてしまっていることに、基本的なところが抜けたままみんなやってるんだなぁと感じる。
mikkame

2019/07/15 06:46

complete_reservationメソッド内の場合の表示はどうなりますか?質問に追記してください
toll_tree

2019/07/15 07:05 編集

@mikkameさん 実行結果の方、画像にて追記しました。
m.ts10806

2019/07/15 07:23

実際に問題が発生しているわけでもないのでもう引いてもいいと思います>mikkameさん dd()にしても結局はSymfonyの方まで読み解かないといけませんしね。
mikkame

2019/07/15 07:51

再現できたので、 文字化け(json_encode)されている方にはddが付いてないんじゃないですか? return ['if give array . ' => 'then will the array convert to json'];
toll_tree

2019/07/15 08:07 編集

@mikkameさん ご確認ありがとうございます。 >文字化け(json_encode)されている方にはddが付いてないんじゃないですか? ddがされていないという点なのですが、文字化け(json_encode)されている方は、質問本文に記載させて頂きました通り、complete_displayメソッド内で「dd($a)」としています為、ddしているように思えるのですが、そういった意味ではないということでしょうか...?
mikkame

2019/07/15 08:22

ddを外してreturn $a->getRequest()->input()すると、添付と同じ結果になります。 結果ベースではこの状態と勘違いされているのではと思うのですが? とりあえずreturn $a->getRequest()->input()で文字化け(json_encode)されているのと同じ結果になる事を確かめてもらえませんか?
toll_tree

2019/07/15 08:35

@mikkameさん 何度もすみません。 return $a->getRequest()->input()として実行してみましたら、文字化けが発生していることが確認できました。
mikkame

2019/07/15 08:42

その状態と勘違いされているのではないでしょうか? という回答なんですが、どうでしょうか
toll_tree

2019/07/15 08:46

いえ、complete_reservationメソッド内でdd( $a->getRequest()->input())としますと、文字化けは発生せず、追記で添付させて頂きましたような実行結果となるんですよね...
toll_tree

2019/07/15 08:47

ですので、dd( $a->getRequest()->input())こちらの結果と、return $a->getRequest()->input()こちらの結果では実行結果が違ってきているとった状況です。
toll_tree

2019/07/15 09:24 編集

@mikkameさん ふと思ったのですが、実は2重送信防止の為リダイレクトさせなければと思いcomplete_reservationメソッド内にてredirect関数を用い、リクエスト結果をリダイレクト先のアクションメソッドにて処理させようと思ったのですが、そのやり方は吉ではないのでしょうか..? どうしても、リクエストされた値をリダイレクト先のビューへ渡さなければならないと思った為、このような方法を取ろうと思うに至ったんですよね。。正し、リダイレクトではないgetアクセスは防ぎたかった為、リダイレクトされた際に、値が入っていなければ別ページに飛ばす処理を今回でいいますと、complete_displayメソッドで処理したかったといった感じです。。。
mikkame

2019/07/15 09:34

質問文に記載されているコードでは 「dd( $a->getRequest()->input())」と書かれていないので、実際に本当にこのコードが実行されているのか疑問に残ります。ですので 勘違いされているのではないでしょうか? という回答となっています。 もう一度、コードを確認してもらえませんか?または、正しくコピペしてコード貼ってもらえませんか?
toll_tree

2019/07/15 09:51 編集

@mikkameさん 「dd( $a->getRequest()->input())」こちらを実行した際のコードの方を、質問本文に追記いたしました。
mikkame

2019/07/15 10:19

追記➁の状態で、 ddの行をコメントアウトすると > 上記画像の通り文字化けしてしまっているという点 が再現できます。 ddがあると再現できません。ファイルはちゃんと保存されているかどうかまで確認して 確実にddの結果が、文字化けしまっているという点になっていますか?
toll_tree

2019/07/15 10:37 編集

>追記➁の状態で、 ddの行をコメントアウトすると > 上記画像の通り文字化けしてしまっているという点 が再現できます。 ここの点につきましては、ご指摘の通り、ddの行をコメントアウトしますと文字化けの結果となります。
mikkame

2019/07/15 15:27

では、ddの行をコメントアウトしなければ文字化けは起こらないのですか?
toll_tree

2019/07/15 22:22

はい。文字化けは起こらないです。
toll_tree

2019/07/15 22:43 編集

@mikkameさん 根本的な解決策としまして、実はredirectする際に変数を持たせる方法が分からなかった為、今回のような「redirect('/reserve/complete/display')->getRequest()->input()」の方法を取ったのですが、redirectさせる際に、変数を持たせる方法はあったりしますでしょうか...?
m.ts10806

2019/07/16 01:07 編集

質問要件が変わってきているので別質問にすべきかと。 (何度も言っているように今回の質問は問題が起きてないのに問題と言っていることが問題) それに未解決にしている過去質問と要件としては近いように思うので、そちらで対応してください。
mikkame

2019/07/16 03:46

> 根本的な解決策としまして、実はredirectする際に変数を持たせる方法が分からなかった為、今回のような「redirect('/reserve/complete/display')->getRequest()->input()」の方法を取ったのですが、redirectさせる際に、変数を持たせる方法はあったりしますでしょうか...? これに付いては別に問題を起票してください。 今回の問題は、ddをしたから文字化けを起こしたのではなく、配列をコントローラでrerutnした結果、配列が自動的にjson_encodeしてレスポンスされた。 でご納得ください。
toll_tree

2019/07/16 03:56

@mikkameさん 分かりました。 長々と、ありがとうございました。
guest

0

なんで都合が悪くなると逃げるの?
せっかく回答や指摘してくれた人達に申し訳ないと思わない?思えないか
だったら最初から質問しないでいただきたい
イメージ説明

投稿2019/07/16 02:15

morumaru

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toll_tree

2019/07/16 04:01 編集

>せっかく回答や指摘してくれた人達に申し訳ないと思わない? その添付画像のような表示になるのは、削除リクエストを出した際の表示ですが、回答が付いた場合は削除リクエストを行えないので、そのような画面になることはありません。 つまり、自分は回答が付く前に削除申請を行ったということです。
m.ts10806

2019/07/16 04:08 編集

この質問者(toll_tree)はそういうのを聞き入れる人ではないのです。 だから全く成長がなく延々と初心者をやっている。どんどん悪くなっていっている。本人は本当の問題には目を背け続けていることに気づいていない。そこを助言されてもそれすら目を背けて逃げてるから。 ただ、その指摘を捨てアカウントでここの回答でするのは不適当と思いますが、当該質問については解決したなら自分で回答を書いて自己解決とすれば良かっただけのこととは思います。 (私が「これ条件反射的に質問するようなこと?」という指摘を入れたのが聞き入れられたかは不明。でも削除ポリシーからすると削除依頼が通る内容ではない)
m.ts10806

2019/07/16 04:08

この回答者(morumaru)はおそらく事情を良く知っている誰かの捨てアカウントなので(登録日が今日でこの質問にまっすぐ来ているから)、その程度は知った上でのコメントだと思います。 逃げてるのは事実ですよね?だいぶ前から。 だから「せっかく回答や指摘してくれた人達に申し訳ないと思わない?」はその質問に限った話ではなく、これまでのあなたのやり方全てに対しての疑問でしょう。 ※私は捨てアカウントや複数アカウントといった規約に違反すること、卑怯な手は使わないのであしからず。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問