我有点担心我应该如何处理我的zend-application中的表单。现在我正在为我需要的每个对象为addAction()和editAction()创建两个单独的表单。我的删除公式总是一样的,我只是更改了那些属性。
我在想什么:这里的最佳做法是什么?
我个人认为最好只有像“Object1,Object2”而不是“Object1Add”,Object1Edit,Object2Add,Object2Edit“
这样的表格。我问的共鸣是因为我显然需要两种不同的形式。有些元素根本不会被更改,所以我不希望用户看到它们。
方法可以是控制器内的$ form-> removeElement('X')editAction()
我为什么这么想? 简单的错误 - 我可以在这里添加一个字段并在第二个表单中忘记它或在一个表单中显示带有'disabled = 0'标记的字段,但在另一个表单中没有该查询。
希望我能让自己清楚:) 提前谢谢!
答案 0 :(得分:2)
我假设您确实扩展了表单类。我将名为edit
或add
的函数添加到执行相应逻辑的类中。这样您就可以将表单逻辑保留在表单中而不是控制器中。
答案 1 :(得分:1)
我会完全按照你说的做:1表格包含所有元素。然后根据具体情况,只需在表单上使用removeElement
方法删除不需要的元素。
答案 2 :(得分:1)
这是使用工厂设计模式的最佳时机。不要使用构造函数创建表单,而是使用工厂方法。这是一个快速伪代码布局:
static createAdd()
form = new self()
call form->initCommon
call form->initAdd
return form
static createEdit()
form = new self()
call form->initCommon
call form->initEdit
return form
initComon()
add the common+validators elements
initAdd()
add the elements+validators only used in Add
initEdit()
add the elements+validators only used in Edit
有道理吗?