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

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

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

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

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

28314閲覧

POST送信で同じnameを配列として渡したい

k499778

総合スコア599

HTML5

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

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2016/04/18 10:45

編集2016/04/18 11:30

現在htmlで入力フォームの値を送信し、cakephp3のコントローラークラスで値を受け取るプログラムを組んでいます。

そこで質問があります。
結論から言うと、

同じname属性の値を配列にして渡すにはどうしたらいいでしょうか?1次元ではなく、多次元で渡したいです。

ただこのサイトを見て単純に1次元で配列を渡す方法はわかりました。
https://javascript.g.hatena.ne.jp/py4s-tnk/20130226/1361884317

そうではなく、
結果的にこのようなオブジェクトをコントローラークラスで受け取りたいです。

homeオブジェクト(家庭オブジェクト)
home.children.id
home.children.name
※id,nameが複数ある

POST送信なら
コントローラークラスで以下のように受け取り、変数homeに理想としている配列がそのまま渡される。
$home = $this->$request->data;

このようなことを実現する方法はあるでしょうか?
もしわかる方がいればお願い致します。


追記

携帯からの投稿だったため思うような書き方ができなかったので、少し追記します。

現状以下のような書き方をしています。

HTML

1<form action="/hoge" method="post"> 2<div> 3 <input type=text name=children_name[] value="太郎"> 4 <input type=text name=children_id[] value="1"> 5</div> 6<div> 7 <input type=text name=children_name[] value="二郎"> 8 <input type=text name=children_id[] value="2"> 9</div> 10<div> 11 <input type=text name=children_name[] value="三郎"> 12 <input type=text name=children_id[] value="3"> 13</div> 14</form>

コントローラクラスのhogeアクション

php

1$home = $this->$request->data;

$homeの中身。現状

Array ( [children_name]=>Array ( [0]=>太郎 [1]=>二郎 [2]=>三郎 ) [children_id]=>Array ( [0]=>1 [1]=>2 [2]=>3 ) )

これを以下のような結果に変えたいのです。
$homeの中身

Array ( [children]=>Array ( [name]=>Array ( [0]=>太郎 [1]=>二郎 [2]=>三郎 ) [id]=>Array ( [0]=>1 [1]=>2 [2]=>3 ) ) )

そのようなHTMLの書き方はやはりないのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

これ以下のような送信の仕方ならできますね。

input1 name='home[children][name][]'
input2 name='home[children][id][]'

で送信して,サーバー側で
params["children"]のvalueのhashをインデックスループの内側でkey valueループを回し,それぞれのvalueで新たなhashを作ってモデルのコンストラクタに投げるということをやってますね。
オブジェクトの情報全てを1つのインプットにまとめることは出来ないのでサーバ側に初期化に必要なセットを送ってモデルに受けとらせるのが常套手段になります。
このときモデルのコンストラクタにhashを入れたらそれぞれのパラメータに値が代入されるようにすると実装が綺麗になります。

投稿2016/04/18 14:17

編集2016/04/18 14:35
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

k499778

2016/04/18 15:03 編集

回答ありがとうございます!できました! まさに知りたかった方法です。 すごく綺麗にシンプルにコードを書くことができました。 コントロールクラスで以下のように書くだけでhomeオブジェクトが簡単に作れました。 $home = $this->request->data['home']; ありがとうございました。
退会済みユーザー

退会済みユーザー

2016/04/18 15:24

なるほどchildrenのオブジェクト化までの話は別に必要なかったのですね。 解決出来て良かったです。
guest

0

POST送信、というかHTTPで送れるのは基本的にテキストですよね。
なのでオブジェクトが送られてくるというのは無理です。

例えば、JavaScriptにて適当なルールで成形したものを
input の hidden に設定し、PHP側で希望する形に変換する
という流れは分かりやすいんじゃないかなあ。
なにがしたいのかよく分からないので具体的な提示はできませんが…

投稿2016/04/18 10:54

takasima20

総合スコア7460

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

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

k499778

2016/04/18 11:33

少し追記しました。 回答ありがとうございます。 そうですね。最悪PHP側で現状のHTMLで受け取った値を希望する形に変換しようとは思っているんですが、もしもう少しいい方法があればと思い、 そのアドバイスを受けたく、質問しました。
takasima20

2016/04/18 11:46

例えば、JavaScriptでPHPのデータ形式の文字列を生成して PHP側ではそれをevalでオブジェクトにしてもいいけど、 それだと機能の分担という意味で好ましくないような気がします。
k499778

2016/04/18 12:54

そうですね。javascriptで形を変換するほどのことでもないので、それだとhtmlで渡した値をphpで制御しようかなと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問