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

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

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

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

PHP

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

Laravel 5

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

Q&A

3回答

4390閲覧

変数(オブジェクト)をコントローラへ渡す方法

toll_tree

総合スコア199

Laravel

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

PHP

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

Laravel 5

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

1グッド

1クリップ

投稿2019/06/26 07:38

編集2019/06/27 06:16

post、またはgetにより、変数データ(オブジェクト)をコントローラー部分へ送る方法はありますでしょうか?
具体的には下記コードTestController.phpの「test」メソッド内にて、index.blade.phpへ送った$dateを、index.blade.phpのフォーム内にて組み込み、TestControllerの「index」メソッド内にて、ルーティングを通し渡したいです。
以下は、TestController.phpです。
※ミニマムコードとして、作成しましたので多少省かせてもらっています。

<?php class Testcontroller extends Controller{ public function test(){ $date = new Carbon(); return view('index',['date' => $date]); } public function index(Request $request){ $data = $request->data; } }

以下は、index.blade.phpです

<html> <body> <form method="post" action="/index" > <input type="submit" value='送信'>    <input type="hidden" name="data"value="{{$date}}"> </form> </body> </html>

以下は、ルーティング部分のweb.phpです

<?php Route::post('/index','TestController@index'); Route::get('/test','TestController@test') ?>

ご回答頂けましたら、幸いです。
よろしくお願いします。

aae_11👍を押しています

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

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

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

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

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

m.ts10806

2019/06/26 08:06 編集

変数データ(オブジェクト) とは具体的にどこにある何でしょうか。この内容だけだと全く意味が分かりません。客観的に読んで伝わるように一般的な表現で記載してください。 そして、調べたこと、試したことを記載してください。
m.ts10806

2019/06/26 08:09 編集

あとtest() はどこからどう呼ばせるつもりでしょうか。 今のところindex()しか呼ばせてませんが。
m.ts10806

2019/06/26 08:11

というか、なぜそうする必要があるのでしょうか。 回りくどいことをやろうとしているようにしか思えません。前提や背景もきちんと記載してください。
m.ts10806

2019/06/26 08:24 編集

>送った$dateメソッドを $dataはあくまで変数ではないでしょうか。 決まっている文言は正しく使わないと回答者に思わぬ誤解を生み、自身も落とし穴にハマります。(会話も成り立ちません) プログラムは組んだようにしか動きません。
m.ts10806

2019/06/26 22:50

必要なことが追記されていないのと必要な修正がされていないので再掲: なぜそうする必要があるのでしょうか。 回りくどいことをやろうとしているようにしか思えません。前提や背景もきちんと記載してください。 >送った$dateメソッドを $dataはあくまで変数ではないでしょうか。 決まっている文言は正しく使わないと回答者に思わぬ誤解を生み、自身も落とし穴にハマります。(会話も成り立ちません) プログラムは組んだようにしか動きません。 ついでに追記: ※ちなみにhtmlに含められるのは文字列だけです。 配列をechoしたらarrayと表示された経験あるでしょう。オブジェクトはobjectです。
m.ts10806

2019/06/27 00:49 編集

追記修正依頼にきちんと応えていないのに回答をもらえると思わないでください。実際にこの質問には回答得るための情報がほとんど含まれていない上に丸投げです。自身が回答するつもりで(事情を全く知らないつもりで)読み直してみてください。 毎回質問に高評価がつくのも理解致しかねます。高評価も低評価も打消しのために行うものではないですよ。
date

2019/06/27 06:09

inputが閉じられていませんよ。実際は閉じられていると思いたい
m.ts10806

2019/06/27 06:42

dateさん inputタグのことでしたら閉じは必要ないです。
m.ts10806

2019/06/27 06:50

dateさん そういうこと・・修正履歴見て理解しました。失礼しました。
guest

回答3

0

今一つ追記修正依頼に応えてもらってないのでふわっとした回答になりますけど。
(何を聞かれているか分からないなら確認してほしい。思い込みばかりでは全員疲弊します) 

post、またはgetにより、変数データ(オブジェクト)をコントローラー部分へ送る方法はありますでしょうか?

ありません。正確には普通はそんなことはやりません
LaravelよりもPHPよりも、そもそもHTMLの問題。
HTMLに投入できるのはそもそも文字列として扱える情報だけです。
配列やオブジェクトを投入することはできません。
(無理やり文字列にしようとしてもArrayとかObjectとかになるだけですしjson_encode()して持っておくのもあまり賢明ではありません)

そもそも$date = new Carbon();$date = new DateTime();とイコールです。
つまり実行時点の日時でDateTimeオブジェクトを生成するわけですが、
それをそのまま渡して何の意味があるのでしょうか?
受取先でnew Carbon();すれば良いのでは?

「回りくどいことをしようとしている」と書いたのはそのためです。

「用途」まで書かないと分かりません。
渡して何に使いたいのか。

もし「test()を表示した時点の時間を持っておいて渡したい」というのでしたら、HTMLに投入する時点ではCarbonを利用するまでもないです。
blade側でPHPの関数date()で文字列として現在の日時を埋め込んでおき

<input type="hidden" name="data" value="{{date("YmdHis")}}">

受取先でCarbonから取得すれば良いです。

php

1public function index(Request $request){ 2 $data = new Carbon($request->data); 3}

「どうしてもオブジェクトで」というのでしたらセッションでしょう。
ただしこのセッションを持っておく意味はあまりないですね。

結局のところ「渡して何にどう使いたいのか」用途次第です。


蛇足:今後質問する際に気を付けてもらいたいところ

※ミニマムコードとして、作成しましたので多少省かせてもらっています。

ミニマムコード作成は大変こちらとしても助かりますし分かりやすくなるところなのですが、要件が抜けてしまっては意味がありません。
「実現したいこと」「前提、背景」「結局どうしたいのか」が見えないとどんなミニマムコードも「何もしてない」のと同じです。伝わるものがありません。

回答者が欲しがっているのは「結局何がしたいのか」です。
「要件」です。

コードはあくまで実現の手段としての道具にすぎないので、
「ミニマムコード書いたからこれで分かるやろ」というのは質問者の怠慢です。
道具をどのように使いたいのか、何の目的なのか、これは提示している側にしか分からない、
質問者の頭にしかない「仕様」です。
質問するということはコードで表現がきちんとできない場合がほとんどですから「コードで全部理解しろ」と求めるのは無理があります。
ここはきちんと具体的に文章で説明してください。「伝える力」大きくは「コミュニケーション能力」の問題です。技術は関係ありません。

コード内にコメントで書いてもいいです。
「自分が何をしたいのか」
これが欠けては質問と回答は成り立ちません。問題解決にもなりません。

よろしくお願いします

投稿2019/06/27 06:41

編集2019/07/24 04:07
m.ts10806

総合スコア80850

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

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

0

Laravelの基本を一度以下の学習資料などで、一通り学んでみると理解が深まるかと思います。
PHPフレームワーク Laravel入門
paiza Webアプリ開発入門 Laravel編 (全5レッスン)
ドットインストール Laravel 5.5入門

投稿2019/06/27 01:38

aro10

総合スコア4106

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

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

toll_tree

2019/06/27 02:45

どうもです! ドットインストールのLaravelのレッスンは、外部キーの設定の所はまだ理解できないのですが、そこまでの部分は理解できたといった感じです。 Laravelの入門の参考書は、途中まで勉強していたのですが、途中で詰まってしまってから離れていたのですが、もう一度やり直してみたいと思います。 あの本は、初心者の為に分かりやすく書いていただいていますし、再チャレンジしてみたいと思います!
toll_tree

2019/06/27 02:52

paizaのレッスンは受講したことはなかったですが、なかなか良さそうですね。 有料プランも検討してみたいと思います。
aro10

2019/06/27 05:05

そうですね。 自分で手で進めてみて、わからないところがわかってから、基礎教材を勉強してみると、吸収力が違うと思うので頑張ってみてください????
toll_tree

2019/06/27 05:26

それですよね。もう一度見直してみたいと思います!
m.ts10806

2019/06/27 06:56 編集

toll_treeさん この段階で基本をやりなおせと言われていることに危機感を持ってほしい。(何人にそのように指摘されていますか?そして無視して強引に進めていますか?) LaravelではなくPHP、ひいてはプログラミングとは、から。
mikkame

2019/07/24 19:25 編集

> 「どうしてもオブジェクトで」というのでしたらセッションでしょう。 シリアライズできるオブジェクトとそうじゃないやつがいるのでこの限りではないと思います(再帰参照しているやつとかできないし) # 追記 コメントした箇所まちがってたっぽい。 aro10さん、mts10806さんごめんなさい!
m.ts10806

2019/06/27 10:43

mikkameさん たぶんそれ、私の回答につけられたほうが良いのでは・・・ いずれにしてもそういう場合は別のやり方は幾らでもありそうに思います。 結局「そのデータを使って何がしたいか」次第ですね。
guest

0

いつも質問に何気なく置いてあった

use Illuminate\Http\Request;

これを使います。
Laravel Request
などで調べてみて下さい
https://readouble.com/laravel/5.5/ja/requests.html

<form>にデータを渡して処理するのはPHPと同じで<input>にnameを入れてください

投稿2019/06/27 04:04

date

総合スコア1820

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

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

toll_tree

2019/06/27 05:42

ご回答ありがとうございます。 実は、form部分に、<input type="hidden" name="test" value={{$data}}> と考えたのですが、「$data」がオブジェクトだった場合はコントローラー部分で$request->nameとして、取り出すことができなかったもので、そこで詰まってしまったんですよね...
date

2019/06/27 05:43

ではそれを入れた内容を質問に入れてください
m.ts10806

2019/06/27 06:56 編集

toll_treeさん name=testで送信しても$request->nameでは取り出せないですし、 そもそもブラウザの「ソースを表示」で確認してください。そこに埋め込められているものがそのまま送信されますから。
m.ts10806

2019/06/27 06:56

dateさん 私は低評価していませんが(ドキュメントは「正確に」読んでほしいから)、質問者が渡したいのは「オブジェクト」なのでこの回答では解決にはつながりませんしヒントにもならないと思います。
date

2019/06/27 07:28

この質問内容でおかしいと思っていることは Laravel作っているとindexはurlに来たときに表示させる 今の質問のようにformで処理するときにindexで処理したりはしない。 もう低評価ついてるからいいか /storage/framework/views から実際のviewがどうなっているか確認できるようになったり。 log::debug() を使って /storage/logs からログが確認できるようになるといいですね いろいろあったんでしょうが、もう少しmts10806さんのコメントや回答を見てあげて下さい。説教の部分はともかく、回答は答えになっています
m.ts10806

2019/06/27 08:19

dateさん > Laravel作っているとindexはurlに来たときに表示させる 今の質問のようにformで処理するときにindexで処理したりはしない。 確かに意味合いとしてはおかしいですね。indexというのは「表紙」ですし。 コードが動くからやっていいというものではないですね。役割には役割にあったネーミングをすべきというのは大賛成です。 たぶん初期段階から気を付けてないと後で大事故になりそうに思います。 変数名、メソッド名、クラス名、(HTMLのほうも。スペルミスとか以ての外ですね)
mikkame

2019/06/27 09:25

検索処理だったらindexでもformで処理すると思うんですが もしかしてタブーだったりします?
date

2019/06/27 09:52

すいませんmikkameさんのおっしゃる通りです。
m.ts10806

2019/06/27 09:57

初期でリスト表示があるかないかでも違いそうですね。 あればget,postを同じindexメソッドに投げるでしょうし、なければ別メソッドで受けても良いかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問