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

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

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

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

Q&A

解決済

1回答

378閲覧

【cakePHP】Form->input()の結果が意図した結果にならない

pecchan

総合スコア555

CakePHP

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

0グッド

0クリップ

投稿2018/10/13 10:17

cakephp(2.7.8)
PHP 5.6

更新画面を作っています。

Form->input()で生成したチェックボックスが意図した結果になりません。

具体的には、html上で、

html

1data[Morning][early]

と展開されて欲しいのに、

html

1data[early]

という結果になってしまいます。

Form->input()は、以下のように使ってます。

ctp

1 2 3 <div class="div_row1"> 4 <table border="0" class="tbl_01"> 5 <tr> 6 <td class="td_title" style="width:100px;">早起きだ:</td> 7 <td> 8 <?php 9 echo $this->Form->input( 'early', array( 10 'type' => 'checkbox', 11 'label' => ' ', 12 )); 13 ?> 14 </td> 15 </tr> 16 </table> 17 </div> 18 19

上記は、動作してる別画面からコピーしてきて、
echo $this->Form->input( 'piyo', array(
を、
echo $this->Form->input( 'early', array(
に変えただけです。

つまり、流用元はちゃんと以下のように展開されています。

html

1data[Hoge][piyo]

何かの理由でモデルと連動できていないからでしょうか?
なぜこのような展開になるか分かりません。

分かる方教えていただけないでしょうか??

宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Form::create()文どうなっていますか?
デフォルトのモデルはcreate()メソッドで指定します。
以下のように書くと意図したようになるかと思います。

PHP

1echo $this->Form->create('Morning'); 2echo $this->Form->input('piyo'); 3echo $this->Form->end();

なおCreate文で指定したものと違うモデルを指定したい時は、以下のように モデル名.カラム名 といった感じにします。

PHP

1echo $this->Form->input('Hoge.piyo');

投稿2018/10/13 14:14

CodeLab

総合スコア1939

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

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

pecchan

2018/10/14 00:49

有難う御座います。 確認しました。 流用元もcreate()は使用されていませんでした。 なぜ流用元だけ[モデル]も展開されるのでしょう? 他にも指定する方法ありますでしょうか?
pecchan

2018/10/14 01:01

教えていただいた echo $this->Form->input('Hoge.piyo'); を試しました。 data[Hoge][piyo] と展開されましたが、テーブルの値が1なのにチェックボックスにチェックが入ってません。 テーブルの値が1の時は、チェックが入った状態、 0の時はチェックが入ってない状態で展開されるイメージでした。 何か指定が抜けているのでしょうか?
CodeLab

2018/10/14 04:39 編集

流用元のソースがないので何とも言えませんが、基本的にcreate()とend()メソッドをセットで使わないと意図しない結果になることが多いです。 input()メソッドについては、パラメータ指定でチェックボックスやラジオボタン、テキストエリアなど対応しますが、全て説明するのは困難ですので、まず公式サイトのリファレンス、チュートリアル等をお読みになることをお勧めします。 Formヘルパー https://book.cakephp.org/2.0/ja/core-libraries/helpers/form.html チュートリアル https://book.cakephp.org/2.0/ja/tutorials-and-examples/blog/part-two.html
pecchan

2018/10/14 19:21

CodeLab様 有難う御座います。 create()とend()メソッドで囲ってみました。 おっしゃる通りdata[モデル][piyo]の形で展開されました。 有難う御座いました。 チュートリアルも有難う御座います。一読させていただきました。 ただ、なぜかテーブルの値が1でもチェックされて表示されない点は変わらずでした。 ひとまず当初の質問はこれにて回答しましたので、この点は、改めて質問しようと思います。 有難う御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問