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

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

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

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

CakePHP

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

Q&A

0回答

421閲覧

Formヘルパーのラベル設定のバージョン違いについて

murama2

総合スコア113

PHP

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

CakePHP

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

0グッド

0クリップ

投稿2021/04/11 04:04

編集2021/04/11 04:17

CakePHPを勉強中で参考書「PHP フレームワーク CakePHP3入門」を進めているのですが、Formヘルパーのラベル設定についてお聞きしたいことがあります。

参考書には下記記述で、チェックボックスに対してラベルを設定するという内容なのですが、下記内容を入力してもチェックボックスにidが付与されずラベルの「for」と一致せず正常に動作しませんでした。
サンプルコードをコピペしてみたのですが、同様にidが付与されず動作しませんでした。

■参考書コード

<?=$this->Form->create(null, ['type'=>'post', 'url'=>['action'=>'index']]) ?> <?=$this->Form->checkbox("HelloForm.check1", ['checked'=>true]) ?> <?=$this->Form->label('HelloForm.check1') ?> <?=$this->Form->submit("送信") ?> <?=$this->Form->end(); ?>

■参考書出力例

<form action="/cake3app/hello/." id="Form" method="post" accept-charset="utf-8"> <div style="display:none;"> <input type="hidden" name="_method" value="POST"/> </div> <input type="hidden" name="data[HelloForm][check1]" id="HelloFormCheck1_" value="0"/> <input type="checkbox" name="data[HelloForm][check1]" checked="checked" value="1" id="HelloFormCheck1"/> <label for="HelloFormCheck1">Check1</label> <div class="submit"> <input type="submit" value="送信"/> </div> </form>

■自分が入力した場合の出力例

<form method="post" accept-charset="utf-8" action="/cake3app/hello"> <div style="display:none;"> <input type="hidden" name="_method" value="POST"> <input type="hidden" name="_csrfToken" autocomplete="off" value="031cda5ec8138bc1b0cc5c4f8143bead3f9ef67b7c5e7e2bc43c19bb54ecbf6ff3fc98eb93afe0a57d518093f1927e8b0c7d4548e83e48eac4accf7e82e2f967"> </div> <input type="hidden" name="HelloForm[check1]" value="0"> <input type="checkbox" name="HelloForm[check1]" value="1" checked="checked"> <label for="hellofrom-check1">Check1</label> <div class="submit"><input type="submit" value="送信"> </div> </form>

調べたところチェックボックスに直接idを指定する方法があったので、下記コードを入力したところ、チェックボックスにidが付与されてラベルも動作するようになりました。

<?= $this->Form->create(null, ['type'=>'post', 'url'=>['controller'=>'Hello','action'=>'index']]) ?> <?= $this->Form->checkbox("HelloForm.check1", ['id'=>'hellofrom-check1']); ?> <?= $this->Form->label('HelloFrom.check1'); ?> <?= $this->Form->submit("送信"); ?> <?= $this->Form->end(); ?>

ちなみに参考書のCakePHPのバージョンは「3.3.5」で私が使用しているCakePHPのバージョンは「3.8.13」です。
バージョンによってラベルの仕様が変わっていて参考書のコードが動作しないのでしょうか?
それとも単純に参考書コードに誤りがあるのでしょうか?
バージョン違いについて調べたのですが、言及している情報が見つからず質問させていただきました。
ご教授いただければ幸いです。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問