【问题标题】:rendering zend form elements leaves a whitespace before渲染 zend 表单元素之前会留下一个空格
【发布时间】:2011-07-20 17:02:26
【问题描述】:

当我手动回显 zend_form_elements(通过从 ini 文件创建表单创建)时,似乎在实际元素之前留下了一些空白,我无法理解是什么导致它或如何修复它。顺便说一句,方向是从右到左。截图最能说明我的意思:(1到5个字段是删除标签装饰器后的表单元素)

http://i52.tinypic.com/orqbkz.jpg

这是 php 代码:

$templateElems = '<ol id=elemlist><li>'.$removeButton.'</li>';
        foreach ($elements as $elem){
        /*  $elem->label_style='';*/
            $elem->setLabel('');
            $elem->removeDecorator('label');
            $templateElems = $templateElems.'<li>'.$elem.'</li>';
            $table =  $table.'<th>'.$elem->getName().'</th>';

如果有人至少能告诉我是什么导致了这些空白,我将不胜感激。 提前致谢! 这是所要求的 HTML:

   <input type=hidden id=oldnum name=num value=0></input>
<input type=hidden id=newnum name=num value=0></input>
<ol id=elemlist>
<li><img src="/images/delete.png" id=remitem name="remitem"></img></li>
<li><dd id="name-element"><input type="text" name="name" id="name" value=""></dd></li><li><dd id="text1-element"><input type="text" name="text1" id="text1" value=""></dd></li><li><dd id="text2-element"><input type="text" name="text2" id="text2" value=""></dd></li><li><dd id="num1-element"><input type="text" name="num1" id="num1" value=""></dd></li>
</ol>
<table id=items border="0" cellspacing="1" cellpadding="0" class="list">
<tr><th>Remove Item</th><th>name</th><th>text1</th><th>text2</th><th>num1</th></tr>
</table>
<button id=addnew type="button">הוסף פריט</button></fieldset>
<dt id="submit-label">&#160;</dt><dd id="submit-element">
    <input type="submit" name="submit" id="submit" value="שלח"></dd></form></div>   
        <!--// End CONTENT-->

【问题讨论】:

  • 您好,您可以添加表单生成的 HTML 吗?
  • 看起来您的输出 HTML 缺少表格的正文行(带有&lt;td&gt;s 的行)。他们怎么了?
  • 它们并没有丢失,一旦用户单击 addnew 按钮就会添加它们 - 它会触发 jquery 遍历列表,将每个元素包装在 td 标签中,所有元素都在 tr 中并将行添加到桌子。我没有指定这部分,因为当我看到 php 脚本的结果有那些空格时,我断定它与 javascript 部分无关。很抱歉造成混乱...

标签: php zend-form whitespace element render


【解决方案1】:

我会将装饰器设置为: $elem->setDecorators(array('ViewHelper','Errors'));

此行将删除在您的文本框周围创建的标签,并将删除空格。

【讨论】:

  • 我考虑过这样做,如果我找不到其他解决方案,这可能就是我最终会做的事情。问题是在这种情况下我根本无法使用装饰器..
  • 嗯,在这种情况下,请将您的 css 文件中的 dd 标签设置为没有边距或填充
  • 像这样:dd { margin: 0;填充:0; }
  • 您好,感谢您的帮助,很抱歉这么长时间没有回复结果。我检查了 dd 标签的默认 css,下一个属性出现在那里:-webkit-margin-start: 40px;我将其更改为 0,现在它看起来很好。
猜你喜欢
  • 2011-08-21
  • 2016-03-10
  • 2014-12-17
  • 2021-07-03
  • 2021-04-05
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多