【问题标题】:CakePHP Form Helper just generated too much code for meCakePHP Form Helper 刚刚为我生成了太多代码
【发布时间】:2011-03-15 10:11:39
【问题描述】:

我正在使用 cakePHP。 我使用 cakePHP 内置的 Form Helper 生成输入文本框:

echo $form->input('quote', array('label'=>'Post Number', 'class'=>''));

但是当我查看 HTML 源代码时,我发现了这些:

<div class="input text">
<label for="ReplyQuote">Post Number</label>
<input name="data[Reply][quote]" type="text" class="" maxlength="12" value="1" id="ReplyQuote" />
</div>  

真的绰绰有余。我的意思是 Cake 内置的 Form Helper 生成的代码。
那些以奇怪的命名约定方式命名的类的 DIV 标记没有帮助,
因为类名之间有空格,例如:

 <div class="input text">

CakePHP 是否有任何选项让用户省略那些 DIV 标签?

【问题讨论】:

  • 您知道您可以将多个类分配给单个 HTML 元素,对吧?例如,这对于为所有类型的输入字段分配标准样式非常方便,而且对于文本输入也有特定的样式规则。

标签: cakephp


【解决方案1】:

是的。

查看可以传递给 FormHelper::input() 方法的选项数组。参考书目在http://book.cakephp.org/view/189/Automagic-Form-Elements

简而言之,表单助手正在向 div 添加两个不同的类——输入和文本。如果你不想要一个 div,就这样做:

echo $form->input( 'quote', array( 'label' => 'Post Number', 'div' => false ) );

设置 options['class'] 值只会影响分配给实际输入本身的类选择器(在您的 HTML 代码中查看输入标记如何具有 class=""?)

【讨论】:

  • 感谢您的快速帮助,Travis Leleu
  • 应该注意,禁用div 选项也会破坏自动错误消息和标签,这意味着如果你想合并这些,你必须自己调用FormHelper::labelFormHelper::error元素。
【解决方案2】:

你也可以使用 $form->text() 作为输入框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2011-04-27
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多