Web应用程序中同一表单的多个视图

时间:2013-05-13 21:10:53

标签: php design-patterns model-view-controller web-applications architecture

我有一种情况,我有几种方法可以在我的php网络应用程序中执行相同的活动。

应用程序的“管理窗口小部件”部分包含用于创建新窗口小部件和现有窗口小部件列表的表单。

然后在应用程序的其他地方有一个按钮,弹出一个对话框来添加一个新的小部件。

然后在应用程序的主页上有另一个地方,其中嵌入了一个表单来添加一个小部件(想想主页门户网站)。

我的问题是:最佳做法是什么?在这种情况下,所有形式都基本相同。所以我的第一直觉是对所有这三种场景使用相同的代码。另一方面,主页上的空间可能更小,并且三者之间的布局可能不同。

所以尽管它会重复,但复制此表单3次更好(有一个合适的模型层,所以重复的代码不包括添加/编辑小部件的逻辑)?或者尝试在所有这些场景中强制使用单个视图?对我来说两者都是错误的,我希望有些想法能够找到某种中间立场。

3 个答案:

答案 0 :(得分:1)

一种方法是将表单的标记(而不是样式)作为独立文件,然后可以从任何你喜欢的地方包含它。

然后,您可以使用AJAX将表单提交到处理表单提交的特定PHP脚本,并返回有意义的JSON响应。然后,您可以在相关页面上显示和设置此JSON响应的样式。

通过这种方式,您可以使用单个表单(可以采用不同的样式)以及使用表单所需的任何视图的单个处理程序。

答案 1 :(得分:0)

我的意思是,最好的方法是从其他形式撰写表格(不要重复自己)。您可以使用相同表单的不同模板来更改最终表单的外观。

例如/ idea您可以检查Nette Framework中使用的表单(http://doc.nette.org/en/forms

吨。

答案 2 :(得分:0)

如果你只是改变样式而不是标记,我认为最好的方法是在表单元素中添加一个特定的类,然后根据需要使用Javascript(不是Ajax,justa Javascript)在这些clases之间交替。

如果您的应用程序根本不使用Ajax并且您只是使用PHP生成网页,那么就可以轻松决定您应该创建哪个类。

在CSS中,你可以这样做:

form.main { ... }
/* main form rules */

form.other { ... }
/* other form rules */