使用 CakePHP 的 FormHelper 自定义输入 HTML

问题描述 投票:0回答:3

我正在尝试使用 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
3个回答
15
投票

你想多了。 (不用担心,我们都这样做)。 请记住,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)
));

0
投票

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


-1
投票

如果字段很多,可以使用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>');
});
© www.soinside.com 2019 - 2024. All rights reserved.