我几乎在绳索的尽头试图使用装饰器来设计我的Zend表单。以前为了避免这些问题,我将创建一个扩展zend_form的表单脚本,添加我需要的任何验证器,标签等,然后使用$form->getElement('my_form_element');
从我的视图脚本中检索该元素
这样我就可以在元素周围包装我想要的任何css标签。我想我应该学习如何使用内置的装饰器,但我开始觉得这是浪费我的时间。我的旧方式似乎更容易,是否有一些原因我没有看到更好地使用自定义装饰器?
答案 0 :(得分:1)
如果您的表单具有特定的可重复标记,装饰器可以派上用场,例如,如果您想使用Bootstrap。除此之外,特别是如果你有一个好的html / css人,我会避免它们。
答案 1 :(得分:1)
通常,装饰器用于动态添加功能,而无需触及代码的核心功能并更好地重用代码。然而,在Zend_Form
中,我认为装饰器系统(以及一般的Zend_Form
)是不直观的,并且严重过度设计,因此它与它应该做的完全相反:帮助开发人员更快地创建更好,更直观的代码。
在我看来,Zend_Form_Decorator
的使用仅在你有一些扩展逻辑的情况下才有意义,你计划在整个项目中重复使用多种不同类型的元素。
让我举两个例子:
使用装饰器,您现在可以将添加的功能的逻辑与底层元素的逻辑分开,因此您可以使用相同的代码将工具提示和/或实时验证功能添加到文本框元素以及任何其他元素元素只需将所有装饰器添加到元素中即可。
Zend Framwork的首席开发人员Matthew Weier O'Phinney也发表了一篇很棒的文章,对使用装饰器的动机以及大量例子给出了一些背景见解:Decorators with Zend_Form