我正在尝试使用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),我找不到有关如何执行此操作的足够信息。
看起来我需要在输入法上使用format选项,但无法弄清楚如何正确使用它。特别关注输入字段周围的div,上面有一个类名。
E.g。我尝试过这样的事情:
echo $this->Form->input('email_address', array(
"input" => array('attributes' => array('wrap' => 'div','class' => 'formRight'))));
但这并没有改变任何标记,只是抛出这个错误: 注意(8):数组到字符串转换[CORE \ Cake \ View \ Helper.php,第459行]
所以我的问题是如何让这个表单助手创建该标记?
任何帮助非常感谢
答案 0 :(得分: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和&amp;标签。在上面的例子中,告诉它你不想要div,并用div自己包装它。
如果您不想在任何输入周围<div>
或<label>
s,您还可以设置表单的inputDefaults:
$this->Form->create('Whatever', array(
'inputDefaults' => array('label'=>false, 'div'=>false)
));
答案 1 :(得分:0)
如果你有很多字段,可以使用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>');
});