Php 曾德<;dt>&书信电报;dd>;装潢师:移除它们会有什么损失

Php 曾德<;dt>&书信电报;dd>;装潢师:移除它们会有什么损失,php,zend-framework,zend-form,Php,Zend Framework,Zend Form,这个问题是针对Zend_表单的。Zend_表单添加了标准的装饰器,如。如果我移除它们,我会损失什么?Zend_Form本身是否将其用于错误报告或任何其他原因?它们仅用于在定义列表中构建Zend Form元素的输出。表单是否呈现错误由错误装饰器控制 请参阅Matthew Weier O'Phinney的这一系列文章: 以及Rob Allen的Zend_表单教程: 或 $element->clearDecorators()并设置自己的装饰器 1)通过CSS而不是通过标记(通过编写自

这个问题是针对Zend_表单的。Zend_表单添加了标准的装饰器,如
。如果我移除它们,我会损失什么?Zend_Form本身是否将其用于错误报告或任何其他原因?

它们仅用于在定义列表中构建Zend Form元素的输出。表单是否呈现错误由错误装饰器控制

请参阅Matthew Weier O'Phinney的这一系列文章:

以及Rob Allen的Zend_表单教程:

$element->clearDecorators()并设置自己的装饰器

1)通过CSS而不是通过标记(通过编写自己的装饰程序)更改表单的外观是最简单的,也许也是最好的做法,至少在您没有熟练编程经验的情况下是这样。 通过删除DdDt装饰器,CSS的许多可能性,例如输入字段/标签/错误列表定位、着色、缩进等都丢失了。 例如,在
中,您可以在表单初始化中添加自己的类,稍后可以对其进行样式化,以满足您的特定需要

见代码:

$comment = $this->createElement('textarea','comment',array(
    'label'=>'Post a comment',
    'required'=>true
))
  ->setDecorators(array(
    'ViewHelper', 
    'label', 
    'Errors', 
    array(
       'HtmlTag', 
       array(
          'tag' => 'dd', 
          'class'=>'elevatedField'
       )
    ) 
 ))
; 
现在,在
.elevatedField{}
规则中的CSS样式表中,您可以定义此textarea字段的特定外观。 实际上,这个例子并不是针对默认的DdDt装饰器,但它很好地解释了利用
标记的方法。对于默认的DdDt装饰器,情况几乎相同

看看这里,只有css才能实现什么: 这不是一个限制

2) html标记的语义也丢失了,这几乎毫无意义,至少在今天是这样


此外,Zend_表单本身不使用DdDt进行错误报告-有另一个标准的装饰程序名为“Errors”,用于此需求。

我要补充的是,即使没有CSS样式,DdDt也能使表单呈现得很好:),并且还添加了语义含义:“dd(定义)中的这个元素表示用户名(如dt-定义术语中所述)整个表格就是一个这样定义的列表“
$comment = $this->createElement('textarea','comment',array(
    'label'=>'Post a comment',
    'required'=>true
))
  ->setDecorators(array(
    'ViewHelper', 
    'label', 
    'Errors', 
    array(
       'HtmlTag', 
       array(
          'tag' => 'dd', 
          'class'=>'elevatedField'
       )
    ) 
 ))
;