Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php web应用程序中同一表单的多个视图_Php_Design Patterns_Model View Controller_Web Applications_Architecture - Fatal编程技术网

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

Php web应用程序中同一表单的多个视图,php,design-patterns,model-view-controller,web-applications,architecture,Php,Design Patterns,Model View Controller,Web Applications,Architecture,在我的php web应用程序中,有几种方法可以执行相同的活动 应用程序的“管理小部件”部分有一个用于创建新小部件和现有小部件列表的表单 然后在应用程序的其他地方有一个按钮,弹出一个对话框来添加一个新的小部件 然后在应用程序的主页上,还有一个地方嵌入了一个表单来添加一个小部件(想想主页门户) 我的问题是:这方面的最佳做法是什么?在这种情况下,所有形式基本相同。所以我的第一反应是对这三个场景使用相同的代码。另一方面,主页上的空间可能更小,三者之间的布局可能有所不同 因此,即使是重复,是否最好将此表单

在我的php web应用程序中,有几种方法可以执行相同的活动

应用程序的“管理小部件”部分有一个用于创建新小部件和现有小部件列表的表单

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

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

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


因此,即使是重复,是否最好将此表单复制3次(有适当的模型层,因此复制的代码不包括添加/编辑小部件的逻辑)?或者尝试在所有这些场景中强制使用单个视图?对我来说,这两种形式似乎都是错误的,我希望能有一些想法来找到某种中间立场。

我的意思是,最好的方法是从其他形式中组合形式(不要重复你自己)。可以对同一表单使用不同的模板来更改最终表单的外观

例如/idea您可以检查表单在Nette框架中使用了什么()


T.

一种方法是将表单的标记(而不是样式)作为一个独立的文件,然后可以从您喜欢的任何位置包含该文件

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


这样,您就有了一个表单(可以采用不同的样式)和一个处理程序来处理使用表单所需的任何视图。

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

如果您的应用程序根本不使用Ajax,而您只是使用PHP生成web页面,那么简单的问题就是决定您应该使用哪个类

在CSS中,您可以执行以下操作:

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

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

这就是我的结局。我在jquery/ajax中使用这种模式来创建可重用的控件。因此,我可以使基本表单成为一个控件,并根据需要使用不同的CSS将其拉入每个视图。