【问题标题】:Multiple views for the same form in a web applicationWeb 应用程序中同一表单的多个视图
【发布时间】:2013-05-08 00:38:43
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    T.

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 这就是我最终要走的路。无论如何,我正在将这种模式与 jquery/ajax 一起使用来制作可重用的控件。因此,我可以将基本表单设为控件,并根据需要使用不同的 CSS 将其拉入每个视图。
      【解决方案3】:

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

      如果您的应用程序根本不使用 Ajax,而您只是使用 PHP 生成网页,那么决定您的表单应该拥有哪个类是一件简单的事情。

      在 CSS 中,你可以这样做:

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

      【讨论】:

        猜你喜欢
        • 2012-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多