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

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

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

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

Q&A

解決済

1回答

13858閲覧

cakephp3 FormHelperのControlメソッド($this->Form->control)の定義場所を知りたい

maifukuhara

総合スコア83

CakePHP

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

0グッド

0クリップ

投稿2017/03/28 04:30

cakephp3.x系のCookBookに、
フォームの出力細かく定義したい場合はcontrolメソッド( $this->Form->control)を使うと
よい旨の記載があります。
https://book.cakephp.org/3.0/ja/views/helpers/form.html#automagic-form-elements

3系になってinputメソッドでのDivタグ消しが手軽でなくなり、
余計なタグ出力の少ないControlメソッドを使いたく、
設定できるオプションなどを調べたい思っているのですが、

このメソッドの定義されている
ファイルがどれなのか、場所がわかりません。

公式のAPIリファレンスにも、FormHelperの部分には、
control()メソッドの記載がみあたりません。
https://api.cakephp.org/3.3/class-Cake.View.Helper.FormHelper.html#_input

localhost://myapp\vendor\cakephp\cakephp\src\View\Helper\FormHelper.php
には該当の定義文がみあたらないようですし、
「finction control」 などでgrepもしてみたのですが、
うまく見つけらませんでした。

ご存じの方、いらっしゃいましたら、
アドバイスをいただけないでしょうか?
よろしくおねがいします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

もしかしてですが、使用しているCakePHPのバージョンは3.3かそれ以前ではないでしょうか?

3.4 移行ガイド
こちらによると、$this->Form->control メソッドはCakePHP3.4で追加されているようです。

ちなみに実装は以下のようになっており、3.3以前の input メソッドが名称変更されたようです。

  • input メソッド。

input メソッド

php

1 public function input($fieldName, array $options = []) 2 { 3 return $this->control($fieldName, $options); 4 }
  • control メソッド

control メソッド

蛇足:
フォームの出力タグは、オプションの templates を変更することでコントロールすることが出来ます。
都度指定することも出来ますが、設定ファイルでまとめて指定することも出来ます。
FormHelper で使用するテンプレートのカスタマイズ

指定できる templates のデフォルトは以下になります。
cakephp/FormHelper.php at master · cakephp/cakephp

php

1 'templates' => [ 2 'button' => '<button{{attrs}}>{{text}}</button>', 3 'checkbox' => '<input type="checkbox" name="{{name}}" value="{{value}}"{{attrs}}>', 4 'checkboxFormGroup' => '{{label}}', 5 'checkboxWrapper' => '<div class="checkbox">{{label}}</div>', 6 'dateWidget' => '{{year}}{{month}}{{day}}{{hour}}{{minute}}{{second}}{{meridian}}', 7 'error' => '<div class="error-message">{{content}}</div>', 8 'errorList' => '<ul>{{content}}</ul>', 9 'errorItem' => '<li>{{text}}</li>', 10 'file' => '<input type="file" name="{{name}}"{{attrs}}>', 11 'fieldset' => '<fieldset{{attrs}}>{{content}}</fieldset>', 12 'formStart' => '<form{{attrs}}>', 13 'formEnd' => '</form>', 14 'formGroup' => '{{label}}{{input}}', 15 'hiddenBlock' => '<div style="display:none;">{{content}}</div>', 16 'input' => '<input type="{{type}}" name="{{name}}"{{attrs}}/>', 17 'inputSubmit' => '<input type="{{type}}"{{attrs}}/>', 18 'inputContainer' => '<div class="input {{type}}{{required}}">{{content}}</div>', 19 'inputContainerError' => '<div class="input {{type}}{{required}} error">{{content}}{{error}}</div>', 20 'label' => '<label{{attrs}}>{{text}}</label>', 21 'nestingLabel' => '{{hidden}}<label{{attrs}}>{{input}}{{text}}</label>', 22 'legend' => '<legend>{{text}}</legend>', 23 'multicheckboxTitle' => '<legend>{{text}}</legend>', 24 'multicheckboxWrapper' => '<fieldset{{attrs}}>{{content}}</fieldset>', 25 'option' => '<option value="{{value}}"{{attrs}}>{{text}}</option>', 26 'optgroup' => '<optgroup label="{{label}}"{{attrs}}>{{content}}</optgroup>', 27 'select' => '<select name="{{name}}"{{attrs}}>{{content}}</select>', 28 'selectMultiple' => '<select name="{{name}}[]" multiple="multiple"{{attrs}}>{{content}}</select>', 29 'radio' => '<input type="radio" name="{{name}}" value="{{value}}"{{attrs}}>', 30 'radioWrapper' => '{{label}}', 31 'textarea' => '<textarea name="{{name}}"{{attrs}}>{{value}}</textarea>', 32 'submitContainer' => '<div class="submit">{{content}}</div>', 33 ]

投稿2017/03/28 06:33

編集2017/03/28 06:50
tomcat0090

総合スコア66

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

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

maifukuhara

2017/03/28 12:25

みおとしてました。。。 composerをみたら3.3でした。。。 なるほど、移行ガイドはしっかりよまなきゃですね。 ありがとうございました
tomcat0090

2017/03/29 01:10

3.4 でメソッド名の変更など、比較的大きな変更がされているようです。 私も別のメソッドですが、同じようにメソッド名が変わっていて最近ハマりました^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問