【问题标题】:remove line break between form label and input cakephp删除表单标签和输入 cakephp 之间的换行符
【发布时间】:2012-05-10 20:51:17
【问题描述】:

cakephp 中的表单助手通常会生成这样的表单元素:

<div class="input text">
  <label for="Firstname">Firstname</label>
  <input type="text" id="Firstname" value="" class="test" name="Firstname"/>
</div>

但是是否可以删除&lt;label&gt;&lt;input&gt; 之间的换行符以得到类似这样的内容:

<div class="input text">
  <label for="Firstname">Firstname</label>    <input type="text" id="Firstname" value="" class="test" name="Firstname"/>
</div>

有什么想法吗?

谢谢

【问题讨论】:

  • 换行有什么问题?它会做不应该做的事情吗?
  • 你确定它会创建换行符吗?在我查看页面源代码的应用程序中,我有这个:&lt;div class="input text"&gt;&lt;label for="name"&gt;Name&lt;/label&gt;&lt;input name="data[name]" type="text" id="name"/&gt;&lt;/div&gt; 标签之间没有空格。
  • 是的,它确实换行了,我不知道为什么

标签: php cakephp cakephp-1.3


【解决方案1】:

“换行符”不在 HTML 中,而是在默认的 CakePHP CSS 中。为了解决这个问题,我在我烘焙的 CakePHP 应用程序中添加了以下 CSS 规则:

label {
    display: inline;
    width: 20%;
    float: left;
}
input, textarea {
    width: 76%;
    clear: none;
}
form div.submit {
    clear: none;
    display: inline;
}

这基本上内联了标签和输入,并为它们适当地设置了宽度(您可能希望根据长度更改应用程序的数字。)

让我知道这是否有效。您可以将这些行添加到 APP/webroot/css/cake.generic.css 的底部,或者根据需要添加新的 CSS 文件。

【讨论】:

    【解决方案2】:

    我同意@srs2012 的回答,但有一种方法可以格式化表单助手的输出。

    FormHelper::input() 动作的第二个参数也接受一个“格式”键。 此键是元素顺序的格式模板。默认输入格式顺序为:

    array('before', 'label', 'between', 'input', 'after', 'error')
    

    任何不在数组中的元素都不会出现在输出中。因此,如果您修改它并删除 'between' 键,它可能会起作用。

    举个例子:

    echo $this->Form->input('Model.name', array('format' => array('before', 'label', 'input', 'after', 'error')));
    

    实际上,我在一个项目中只需要使用一次此设置。 Here it is 在 CakePHP 1.3 API 中。 尝试一下,看看你能想出什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多