【cakephp】->Form()のcontrol()
control()の出力を自在に操りたい。
そんな時は
vendor/cakephp/cakephp/src/View/Helper/FormHelper.phpの
$_defaultConfig の template を見ると、button やら checkbox やらがある。
これをviewで上書きしてやれば、意図した表示にできる。
例えば、下記はたしかアイコンを入れたくて、inputの後に span で囲った任意のコード(下記のtest)を入れれるようにしたやつ。
$this->Form->setTemplates([ "inputContainer" => '<div class="input {{type}}{{required}}"> {{content}}<span class="test">{{test}}</span></div>' ]); echo $this->Form->control("password", [ "templateVars" => ["test" => "{{test}}に入れたい記述"] ]);
controlの前に、setTemplatesでテンプレートの上書き。
上書き対象”inputContainer”はさっきのFormHelper.phpにあるやつ。
inputContainer のほかにもlabelとかもいろいろ変更できる。
setTemplatesしたあとのcontrol()はすべて上書きしたのが適用されるので注意。
あと、setTemplates()をechoしてはダメ。