使用CakePHP的FormHelper自定义输入HTML

cow*_*wls 9 cakephp

我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)

我已经看过Cake文档(使用2.1),我找不到有关如何执行此操作的足够信息.

看起来我需要在输入法上使用format选项,但无法弄清楚如何正确使用它.特别关注输入字段周围的div,上面有一个类名.

我试过这样的事:

echo $this->Form->input('email_address', array(
                                                "input" => array('attributes' => array('wrap' => 'div','class' => 'formRight'))));
Run Code Online (Sandbox Code Playgroud)

但这并没有改变任何标记,只是抛出这个错误:注意(8):数组到字符串转换[CORE\Cake\View\Helper.php,第459行]

所以我的问题是如何让这个表单助手创建该标记?

任何帮助非常感谢

Dav*_*ave 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>
Run Code Online (Sandbox Code Playgroud)

您应尽可能使用表单助手为您的表单,但您不必使用所有的预设,如周围的div和标签.在上面的例子中,告诉它你不想要div,并用div自己包装它.

如果您不希望<div>s或<label>s围绕任何输入,您还可以设置表单的inputDefaults:

$this->Form->create('Whatever', array(
    'inputDefaults' => array('label'=>false, 'div'=>false)
));
Run Code Online (Sandbox Code Playgroud)