0

我四处搜索,我找到了两种类型的答案:1. 使用装饰器(有几个例子,但我不想这样) 2. 使用 css(我找不到一个例如,我所做的只是将标签和相应的元素放在同一行上,而不是将 3 个单独的标签元素组合组合到一条大线上)

我不是css的主人,所以我可以在这里使用一些指针。即使需要一些 javascript/jquery 来帮忙,这也是我想要走的路线。提前谢谢

4

1 回答 1

2

使用装饰器,伙计。默认装饰器会将您的表单元素和标签放在 dt-dd 包装器中。使用不同的 HTML 会更有意义,IMO。尝试这个:

// form decorators
$this->setDecorators(array(
    'FormElements',
    array('HtmlTag',array('tag' => 'table')),
    'Form'
));

// element decorators
$element->setDecorators(array(
    'ViewHelper',
     array('Errors'),
    array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
    array('Label', array('tag' => 'td')),
    array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
))

如果你真的必须只使用 CSS,你可以通过使它们内联来对齐 DD 和 DT 项:

form dd, form dt { display: inline; }

[编辑]

根据其他反馈,另一种可能性:您还可以使用以下方法删除某些元素周围的 dt-dd 包装器:

$element->removeDecorator('DtDdWrapper');

至于为某些元素添加一个类,你可以使用这个:

$element->setAttrib("class","foo");

但请注意,这会将类放在输入节点本身,而不是包装器上,您希望在这种特殊情况下定位它。

于 2012-06-01T10:45:36.007 回答