经过多次调整后,终于找到了答案,但希望这个答案能帮助其他人。因为我还在为预算值进行验证(通过重写表单的isvalid()函数使其生效,但现在尝试将其放入自定义验证器中),所以要发布装饰器内容。
$this->setElementDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));
$budget->setDecorators(array(
'ViewHelper',
array(array('openData' => 'HtmlTag'), array('tag' => 'td', 'openOnly' => true)),
array('Label', array('tag' => 'td')),
array(array('openRow' => 'HtmlTag'), array('tag' => 'tr', 'openOnly' => true))
));
$budgetAmount->setDecorators(array(
'ViewHelper'
));
$budgetPeriod->setDecorators(array(
'ViewHelper',
array('AnyMarkup', array('markup' => 'every', 'placement' => 'PREPEND')),
array(array('closeData' => 'HtmlTag'), array('tag' => 'td', 'closeOnly' => true)),
array(array('closeRow' => 'HtmlTag'), array('tag' => 'tr', 'closeOnly' => true))
));
$includeWeekends->setDecorators(array(
'ViewHelper',
array('Label', array('placement' => 'APPEND')),
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array(array('emptyRow' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'PREPEND')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));
$this->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'table')),
'Form',
array('FormErrors', array('placement' => 'PREPEND', 'class' => 'error')),
array('Description', array('placement' => 'PREPEND'))
));