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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1788閲覧

【Laravel】ControllerからViewに渡した配列を再度Controllerに渡したい

Ochi_a

総合スコア2

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/05/20 03:10

前提

Controllerから渡した配列をViewで表示する処理は終了しています。

実現したいこと

Controllerで作成した配列($result_array)をViewに渡し、画面に表示した後、再度Controllerに配列を渡す処理を実装したいです。
(配列をViewで表示する処理までは完了しています)
View内のformで送ろうとしていますが、正しい記述法が分かりません。

test.blade.PHP

1コード 2<form action="{{url('/register')}}" method="POST"> 3 <input type="submit" name="searchLog" value="登録"> 4 <input type="hidden" name="searchLog" value="$result_array"> 5</form>

送信先のControllerでは、"$result_array"という文字列が取得されます(当然ですが...)
Laravel,HTMLともに初心者の為、記述が無茶苦茶だとは思いますが、お知恵をお貸しいただければ幸いです。

ご回答よろしくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/05/20 03:13

どのcontrollerからどのcontrollerに送信するのですか?
Ochi_a

2022/05/20 03:14

search.controllerからviewに渡した配列を、register.controllerに渡す処理を考えております。
退会済みユーザー

退会済みユーザー

2022/05/20 04:57

serialize / unserialize で一旦文字列にして渡すとか。json_encode / json_decode でも。POSTやGETで外部から受信するデータは改ざんされる余地があるので、DBから引っ張れるデータならなるべくDBから引っ張れるだけの最小限のデータに絞ると良いかも。
Ochi_a

2022/05/20 05:30

ご回答ありがとうございます。 serialize / unserializeで無事配列を渡すことができました。 誠にありがとうございます。
guest

回答2

0

これって1回のセッション内で変数データの受け渡しって話ではなく、複数セッションに渡ってFormからデータを渡す話ですよね?

であれば当然ですが変数のままデータを渡すのは無理なので、一度文字列等にしてFormでデータを渡す(通常のフォームのデータの受け渡し)なり、もしくはSession使ってデータを渡すなりしかないと思います。Viewに変数を書いてそれをそのまま渡すとかはさすがに無理です。


追記)

たぶんdikedaさんの回答がやりたいことなんだろうな、と思います。HTMLやPHPの基礎を学ばれた方がいいかもしれませんね。渡すデータがいっぱいあるならSessionを使った方が楽ですので、それも調べてみるといいと思います。

投稿2022/05/20 03:23

編集2022/05/20 03:27
AbeTakashi

総合スコア4537

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

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

Ochi_a

2022/05/20 03:42

ご回答ありがとうございます。 プログラミングを始めたばかりの為、説明がうまくできず申し訳ございません。 ご教授いただいた内容を調べてみようと思います。
guest

0

ベストアンサー

どんな配列が入っているかは分かりませんが、とりあえず$result_arrayを配列として説明します。

form @foreach ($result_array as $key => $result) <input type="hidden" name={{ $key }} value={{ $result }} > @endforeach

こうすることで、nameに$result_arrrayの各要素の名前と値が格納されるかと思います

投稿2022/05/20 03:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Ochi_a

2022/05/20 03:38

ご回答ありがとうございます。 配列は多次元連想配列で、以下のような配列です。 Array ( [0] => Array([DATE] => 2022-05-20 [name] => nameA ) [1] => Array([DATE] => 2022-05-19 [name] => nameB ) [2] => Array([DATE] => 2022-05-28 [name] => nameC ) ) この配列をそのままregister.controllerへ渡す方法を考えております。
退会済みユーザー

退会済みユーザー

2022/05/20 03:49

@foreach ($result_array as $key => $result) <input type="hidden" name={{ $result['DATE'] }} value={{ $result['name'] }} > @endforeach これで送信する値を格納することはできると思います
Ochi_a

2022/05/20 04:00

ご教授いただいた記述でエラーは発生しなくなりました。 誠にありがとうございます。 もしよろしければ、以下の点にもお答えいただければ幸いです。 register.controller側での受け取り方についてですが、ご教授いただいたコードの場合、以下の〇〇〇の部分はどのようになるのでしょうか? ■register.controller public function registerLog(Request $request) { $searchLog = $request->input('〇〇〇'); }
退会済みユーザー

退会済みユーザー

2022/05/20 05:09

それはその$requestに入っている値によって変わります 通常であれば、$request->inputで取れるのはformから送信されたパラメータのname属性が入っているので 〇の部分には受け取りたいパラメータ名を書けば受け取れます。 値に何が入っているかは、var_dumpやprint_r, echoで出力して確認することができるのでやってみてください またLaravelにおけるRequestについても調べられてはいかがでしょうか。
Ochi_a

2022/05/20 05:33

何度もご回答いただきありがとうございます。 requestについてはまだ知識が浅いので学習させていただきます。 また、配列の受け渡しについてはspygqDJInUJeEYX様にご提示いただいた方法で解決することができました。 様々なご提案ありがとうございました。
AbeTakashi

2022/05/20 06:53

蛇足になるかもしれませんが、シリアライズを覚えたならぜひセッションの使い方まで覚えてください。データをサーバ内部で引き回す方がより確実に安全に処理できますし、手間も少ないです。Laravelを使ってるならより簡単に利用できる仕組みが用意されています。
Ochi_a

2022/05/23 04:57

AbeTakashi様 今回は無事やりたいことを実装できましたが、今後のためセッションについて学習させていただきます。 アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問