我发现,我的大部分工作都是一次又一次地建造同样的东西。
这些基本上是复杂的多种形式,例如抵押贷款申请,保险等。
对于这样的事情,是否存在通用/良好使用的模型?我不关心使用什么语言/技术。我理想的是XML /语言中立。
答案 0 :(得分:1)
您还可以使用http://www.springsource.org/spring-web-flow:
Spring Web Flow是一个Spring MVC扩展,允许实现Web应用程序的“流程”。流程封装了一系列步骤,指导用户执行某些业务任务。它涵盖多个HTTP请求,具有状态,处理事务数据,可重用,并且可能是动态的,并且可以长期运行。
它完美地集成在Groovy& Grails(Webflow Doc)。 Groovy是Java的类似脚本的扩展,而Grails是使用Spring,Hibernate之类的webframework ......
答案 1 :(得分:1)
我个人使用Django来构建表单。我已经完成了复杂的多步骤表单,其中步骤是有条件的,使用django.contrib.formtools.FormWizard
并使用工厂函数为这样的步骤创建Form类:
class SomeWizard(FormWizard):
def process_step(self, request, form, step):
if form.is_valid() and step == 0:
#compute step 2
Step2 = second_step_factory(form)
self.form_list[1] = Step2
在实例化Wizard对象时使用占位符进行步骤:
def some_form_view(request):
Step1 = first_step_factory(request)
placeholder = second_step_factory()
return SomeWizard([Step1, placeholder])(request)
在Django 1.4中,FormWizard由replaced实现了不同的实现,我还没看过。
如果您想要一个语言中立,更具声明性的选项,您可以查看XForms。浏览器支持似乎有点遗弃,但有XSLTs that will transform your XForms into HTML。
答案 2 :(得分:0)
PFBC (PHP表单构建器类)项目的开发考虑了以下目标:
示例代码为:
<?php
//PFBC 2.x PHP 5 >= 5.3
session_start();
include($_SERVER["DOCUMENT_ROOT"] . "/PFBC/Form.php");
$form = new PFBC\Form("GettingStarted", 300);
$form->addElement(new PFBC\Element\Textbox("My Textbox:", "MyTextbox"));
$form->addElement(new PFBC\Element\Select("My Select:", "MySelect", array(
"Option #1",
"Option #2",
"Option #3"
)));
$form->addElement(new PFBC\Element\Button);
$form->render();
//PFBC 2.x PHP 5
session_start();
include($_SERVER["DOCUMENT_ROOT"] . "/PFBC/Form.php");
$form = new Form("GettingStarted", 300);
$form->addElement(new Element_Textbox("My Textbox:", "MyTextbox"));
$form->addElement(new Element_Select("My Select:", "MySelect", array(
"Option #1",
"Option #2",
"Option #3"
)));
$form->addElement(new Element_Button);
$form->render();
?>
结帐PHP Form Builder Class Project。希望这有助于...:)
答案 3 :(得分:0)
我不会尝试语言中立。专注于像CFML或PHP这样的语言,它可以很好地完成这类工作。例如
<input type="radio" name="type" value='mortgage' onmouseup='updateForm(this)'> Mortgage
<input type="radio" name="type" value='loan' onmouseup='updateForm(this)'> Loan
<cfif form.type eq 'loan'>
<input name="income" type="text">
</cfif>
一个非常简单的例子。您还可以使用基于登录详细信息,数据库值,以前的表单等的逻辑.CFML还提供高级表单标签(例如,cfinput),它可以为您处理动态表单的一些混乱细节。 / p>
答案 4 :(得分:0)
好吧,如果你不介意使用哪种语言,并且有兴趣学习ROR,那么这里有一个不错的complex forms tutorial,虽然你需要熟悉这个框架才能使这个工作
也许this answer会帮助你找到一个更简单的面向jquery的方法,可能有点旧
看一看this jQuery multi-step form tutorial,但看起来我最后会在午休时间阅读,因为我有兴趣自己这样做
那里肯定会有一个防止傻瓜的插件
答案 5 :(得分:0)
我假设你使用某种数据库来形成数据。你想要做的是在表格第一页填写一些数据,提交表格到第二页等等。
选项1 - 使用PHP Yii框架。 它有一些很好的内置CRUD(表单)生成支持,它可以自动生成简单的表单。您需要做的是自定义操作以在下一个表单(第二页)上重定向您,并在最终表单上保存所有数据。它还具有良好的基于ajax的验证 您需要做的就是将您的应用程序连接到db选择表生成模型然后生成CRUD。这是一个5-10分钟的任务。然后,您需要自定义表单定义方案以进行验证,并修改已定义的操作以支持更改 你可以尝试他们的sample app Yii Blog。它可以详细解释这个过程。
选项2 - 使用JavaScript。 根据您的要求构建简单的html表单。然后在提交每个页面时调用一个JavaScript(提交按钮的onClick事件)来验证表单并将表单数据存储在JSON / XML对象中。您可以将其序列化或在会话中保留。在提交最终页面时,将整个JSON / XML数据(包括最终页面上的数据)发送到操作标记中的表单处理脚本/ URL。