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

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

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

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

CakePHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

2212閲覧

cakephp3 FormHelper の 記述方法

noranuko

総合スコア12

PHP

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

CakePHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/08/30 03:00

phpのFormHelperの記述方法について質問します。

現在、連動プルダウンを作成しています。
※jQueryの連結ソースは記載していません。

// 親 <select name="country" size="3"> <option value="Japan">日本</option> <option value="America">アメリカ</option> <option value="Australia">オーストラリア</option> </select> // 子 <select name="city"> <option value="Tokyo" class="japan">東京</option> <option value="Kyoto" class="japan">京都</option> <option value="Osaka" class="japan">大阪</option> <option value="NY" class="America">ニューヨーク</option> <option value="LA" class="America">ロサンゼルス</option> <option value="Sydney" class="Australia">シドニー</option> <option value="Melbourne" class="Australia">シドニー</option> </select>

上記をFormHelperを使用してソースを書く場合、
『親』は、

<?=$this->Form->select('country', [ 'Japan'=>'日本', 'America'=>'アメリカ', 'Australia'=>'オーストラリア' ], ['size'=>3] ) ?>

と、書けるのですが、

同様の方式で『子』を書くと

class="*****"

の部分が記載されません。

FormHelperを使用して書く場合、どのように書けば良いのでしょうか。
色々なサイトを探してみたのですが、見つけることができませんでした。

ご指導を宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

マニュアル「選択ピッカーの作成」に書いてありますが、以下のようにすれば、自由に属性を設定することができます

php

1$options = [ 2 [ 'text' => 'Description 1', 'value' => 'value 1', 'attr_name' => 'attr_value 1' ], 3 [ 'text' => 'Description 2', 'value' => 'value 2', 'attr_name' => 'attr_value 2' ], 4 [ 'text' => 'Description 3', 'value' => 'value 3', 'other_attr_name' => 'other_attr_value' ], 5]; 6echo $this->Form->select('field', $options);

今回の例では、以下のようになると思います

php

1$options = [ 2 [ 'text' => '東京', 'value' => 'Tokyo', 'class' => 'japan' ], 3 [ 'text' => '京都', 'value' => 'Kyoto', 'class' => 'japan' ], 4 // 以下、省略 5]; 6

投稿2017/08/31 02:58

popobot

総合スコア6586

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

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

noranuko

2017/09/01 01:14 編集

ありがとうございます。 実装できました。 これの応用として、controller にて DB から読み込みを行って $options に代入し、set にて View に渡したところ、画面上のセレクトボックスに [ 'text' => '東京', 'value' => 'Tokyo', 'class' => 'japan' ], [ 'text' => '京都', 'value' => 'Kyoto', 'class' => 'japan' ], の文字列が直接表示されてしまいました。 ソースを見ると [ &#039;text&#039; =&gt; &#039;東京&#039;, &#039;value&#039; =&gt; &#039;Tokyo&#039;, &#039;class&#039; =&gt; &#039;japan&#039; ], // 以下、省略 と、書かれています。 改善方法はあるのでしょうか。 宜しくお願い致します。
popobot

2017/09/01 05:07 編集

渡している構造が正しい配列ではないんだと思います。 $optionsをdebug($options)等で表示してみるとどうなっているのでしょうか たぶん、DBから読み込むfind()にhydrate(false)やtoArray()をつけたら直るかと
noranuko

2017/09/01 05:28

デバックで行ったところ、配列ではなく、文字列で渡していることがわかりました。 解決しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問