我正在尝试删除或更改CakePHP在其表单助手上使用的包装div。
当我使用此代码时:
echo $this->Form->input('contact', ['label' => false]);
输出结果为:
<div class="input text">
<input type="text" id="contact" maxlength="255" name="contact">
</div>
我想要的是:
<div class="myOwnClass">
<input type="text" id="contact" maxlength="255" name="contact">
</div>
我曾经在CakePHP 2上为输入法添加了更多选项,但是在最新的CakePHP版本中这没有用。有线索吗?
由于
答案 0 :(得分:28)
要更改表单使用中所有输入的换行:
$this->Form->templates([
'inputContainer' => '<div class="myOwnClass">{{content}}</div>'
]);
// or remove completely
$this->Form->templates([
'inputContainer' => '{{content}}'
]);
// now get input with desired wrapping
echo $this->Form->input('contact', [
'label' => false
]);
要更改单一输入的换行,请使用:
echo $this->Form->input('contact', [
'templates' => [
'inputContainer' => '<div class="myOwnClass">{{content}}</div>'
],
'label' => false
]);
有关模板的完整参考,请阅读: Customizing the Templates FormHelper Uses
在版本3中不再支持CakePHP 2自定义包装的样式。来自迁移指南:
div之前,之后,之间和之间的errorMessage选项 从input()中删除。您可以使用模板更新包装 HTML。 templates选项允许您覆盖已加载的模板 一个输入。
答案 1 :(得分:5)
我正在使用购买的UI,而且cakephp3存在一些问题。对我来说,经过大量测试后,删除<div>
首字母并不是那么容易,大多数都是这里提供的解决方案:
echo $this->Form->control('username', [
'templates' => ['inputContainer' => '{{content}}'],
"type" => "text",
"aria-invalid" => "false",
"aria-required" => "true",
"class" => "form-control valid",
"placeholder" => "Ingrese su usuario o email ...",
"autocomplete" => "on",
'label' => false
]);
结果
<input name="username" aria-invalid="false" aria-required="true" class="form-control valid" placeholder="Ingrese su usuario o email ..." autocomplete="on" id="username" type="text">
只添加输入标记(抱歉我的Google-English)
答案 2 :(得分:3)
我认为这是在config文件夹中定义全局模板的更好方法:
<?= $this->Form->create($user, array(
"class" => "ui form",
"templates" => "semantic" // The filename in your config folder without .php
)); ?>
在config文件夹中,使用内容创建文件“semantic.php”(您可以将其命名为任意内容):
return array(
"inputContainer" => '{{content}}' // Here the magic happens
);
希望这有帮助!