【发布时间】:2011-09-16 10:45:52
【问题描述】:
我实际上正在寻找一种很好的方法来为我的所有表单元素使用通用装饰器,同时能够非常具体地更改某些元素的一些装饰器。
假设我希望我的所有元素都有新的通用装饰器。我会在我的父通用表单类的addElement 方法中这样做。例如,在 My_Form 类扩展 Zend_Form 中,它会被包含实际元素声明的 My_Form_User 扩展,我会有类似的东西:
public function addElement($element, $name = null, $options = null)
{
parent::addElement($element, $name, $options);
if (! is_object($element)) {
$element = $this -> getElement($name);
}
if (is_object($element))
{
$element -> clearDecorators();
$element -> addDecorators($this -> elementDecorators);
}
return $this;
}
现在,我对某些表单的某些元素有非常具体的需求。所以我在创建元素时设置了这些装饰器(在My_Form_User 类中)但是,当然,当我使用addElement 将它们添加到表单时,我找不到检查是否有1 个装饰器的方法(@987654328 @ 或 Description 或 Label...) 已被修改,因此我不会用通用的删除它。
有什么想法吗?谢谢!
【问题讨论】:
标签: php zend-framework zend-form zend-decorators