3

我几乎走到了尽头,试图使用装饰器来设计我的 Zend 表单。以前为了避免这些问题,我会创建一个扩展 zend_form 的表单脚本,添加我需要的任何验证器、标签等,然后使用 $form->getElement('my_form_element');
我可以在元素周围包装我想要的任何 css 标签的方式从我的视图脚本中检索元素。我想我应该学习如何使用内置的装饰器,但我开始觉得这是在浪费我的时间。我的旧方法似乎更容易,我看不到有什么原因可以更好地使用自定义装饰器吗?

4

2 回答 2

1

如果您的表单有特定的可重复标记,装饰器可以派上用场,例如,如果您想使用 Bootstrap。除此之外,特别是如果你有一个好的 html/css 人,我会避免他们。

于 2012-05-29T19:37:27.757 回答
1

通常,装饰器用于动态添加功能,而无需触及代码的核心功能并更好地重用代码。然而Zend_Form,我认为装饰器系统(以及Zend_Form一般情况下)是不直观的并且严重过度设计,因此它与它应该做的完全相反:帮助开发人员更快地创建更好、更直观的代码。

在我看来,Zend_Form_Decorator只有在您计划在整个项目中在多种不同类型的元素上重用一些扩展逻辑的情况下,使用 才有意义。

让我举两个例子:

  1. 您想在带有漂亮图标和精美 JavaScript 悬停框的任意表单元素旁边添加一个工具提示图标。
  2. 应在输入数据时直接验证元素,方法是发布 AJAX 请求并在元素旁边添加成功的绿色复选标记或失败的红色十字图标。

使用装饰器,您现在可以将添加功能的逻辑与底层元素的逻辑分开,因此您可以使用相同的代码将工具提示和/或实时验证功能添加到文本框元素以及任何其他元素,只需通过将您想要的所有装饰器添加到元素。

Zend Framwork 的首席开发人员 Matthew Weier O'Phinney 也有一篇很棒的文章,它提供了一些关于使用装饰器的动机的背景知识以及许多示例:使用 Zend_Form 的装饰器

于 2012-05-29T20:31:02.127 回答