我正在尝试使用 CakePHP 的表单助手来生成一些输入元素。
我尝试生成的 HTML 是:
<div class="formRow">
<label>LabelText:</label>
<div class="formRight">
<input name="data[User][email_address]" type="text" value="">
</div>
<div class="clear"></div>
</div>
我浏览了 Cake 文档(使用 2.1),但我找不到足够的信息来说明如何做到这一点。
看起来我需要使用输入法上的格式选项,但不知道如何正确使用。特别关注输入字段周围带有类名的 div..
例如我尝试过这样的事情:
echo $this->Form->input('email_address', array(
"input" => array('attributes' => array('wrap' => 'div','class' => 'formRight'))));
但这不会更改任何标记,只会引发此错误: 注意(8):数组到字符串的转换[CORE\Cake\View\Helper.php,第459行]
所以我的问题是如何让这个表单助手来创建该标记?
非常感谢任何帮助
你想多了。 (不用担心,我们都这样做)。 请记住,CakePHP 的宗旨是让您的事情变得更轻松(除其他外) - 如果您正在努力尝试强迫 Cake 为您做某事,请记住,您可以回到基础知识 - 它只是 PHP/HTML毕竟。
<div class="formRow">
<label>LabelText:</label>
<div class="formRight">
<?php echo $this->Form->input('email_address', array(
'div'=>false, 'label'=>false)); ?>
</div>
<div class="clear"></div>
</div>
您应该尽可能使用表单助手,但您不必使用它的所有预设,例如周围的 div 和标签。 在上面的情况下,只需告诉它你不需要 div,然后自己用 div 包裹它即可。
如果您不想在任何输入周围使用
<div>
或 <label>
,您还可以设置表单的 inputDefaults:
$this->Form->create('Whatever', array(
'inputDefaults' => array('label'=>false, 'div'=>false)
));
CakePHP 5 信息,对于那些来自搜索的人。
您可以使用自己的模板。它们将存储在特定文件中的
APP/config
下。您将将该文件的名称传递给必须使用模板的每个表单。更多信息:https://book.cakephp.org/5/en/views/helpers/form.html#customizing-the-templates-formhelper-uses
这里还有内置模板的列表,也许您需要的已经存在:https://github.com/cakephp/cakephp/blob/a49776e545b72adbf7650d48cd0f393b3a4263aa/src/View/Helper/FormHelper.php#L99
如果字段很多,可以使用Jquery。
php:
echo $this->Form->input('email_address', array('class' => 'formRow'));
Jquery:
$(".formRow").each(function() {
$(this).wrapInner( "<div class='formRight'></div>");
$(this).find("label").prependTo(this);
$(this).append('<div class="clear"></div>');
});