9

我正在尝试使用 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 行]

所以我的问题是我怎样才能让这个表单助手来创建那个标记?

非常感谢任何帮助

4

2 回答 2

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>s 或<label>s 围绕任何输入,您还可以设置表单的 inputDefaults:

$this->Form->create('Whatever', array(
    'inputDefaults' => array('label'=>false, 'div'=>false)
));
于 2012-05-07T01:04:41.220 回答
0

如果你有很多字段,你可以使用 Jquery。

php:

echo $this->Form->input('email_address', array('class' => 'formRow'));

查询:

$(".formRow").each(function() {
    $(this).wrapInner( "<div class='formRight'></div>");
    $(this).find("label").prependTo(this);
    $(this).append('<div class="clear"></div>');
});
于 2015-04-20T05:24:27.090 回答