2012-06-01 3 views
10

私の仕事の大部分は、まったく同じことを何度も何度も繰り返すことになりました。条件付きブランチで複雑なマルチページフォームをモデル化する方法は?

これらは基本的に複雑な複数ページ形式です。住宅ローン申請、保険など

このようなものにはよく使われているモデルがありますか?私はどの言語/技術が使われているか気にしない。私は理想的にXML /言語中立を考えています。

+1

私の努力はありがとうございますが、私の質問は本当に答えられていません。与えられたソリューションは、基本ロジックのモデルを必要とせず、フォームビルダーであり、ロジックが追加されています。私は1つのモデルのすべてを欲しい。 – Jonno

+0

https://tallyfy.comは、フォームベースのプロセスツールで、プロセスに対して強力な条件付き分岐を持ち、繰り返し実行される唯一のツールです。 –

答えて

0

PFBC(PHPフォームビルダクラス)プロジェクトは、以下の目的を念頭において開発されています

  • は、オブジェクト指向のPHP構造を介してフォームの急速な発展を推進します。
  • フォームを構築するときにhtmlと検証を記述する際の不本意な/繰り返しの作業を排除します。ヒューマンエラーは、一貫性のある/テスト済みのユーティリティを使用します。

サンプルコードは次のようになります。

<?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をチェックしてください。これがうまくいくと期待しています。:)

0

私は言語に中立にしようとはしません。この種のことをうまくやっているCFMLやPHPのような言語に焦点を合わせましょう。例えば。

​​

非常に単純な例です。また、ログインの詳細、データベースの値、以前のフォームなどに基づいてロジックを使用することもできます。CFMLは動的フォームの面倒な詳細を処理する高度なフォームタグ(例:cfinput)も提供します。

+1

ColdFusionを他のユーザーに推奨することはありません。 – styler1972

+0

@Styler:「Coldfusion」(アドビ製品)はお勧めしませんでした。私はCFML(言語)を推奨しました。私は実際にCFML(http://getrailo.org)を実行するためにRailo(無料、オープンソース)を使用し、推奨します。 – SpliFF

0

さて、あなたはこの仕事に

を作るためのフレームワークとのある程度の知識が必要になりますが、あなたは、使用される言語を気にし、RORを学ぶことに興味を持っているし、ここでまともなcomplex forms tutorialだしない場合は、おそらくthis answer意志あなたはより単純なjquery指向のアプローチを見つけるのに役立つかもしれません。少し古いかもしれません。

this jQuery multi-step form tutorialを見てください。しかし、私は昼食中に読んで終わるでしょう。これを自分で行うこと

bにバインドされています電子そこ馬鹿プルーフプラグインあまりに

1

またhttp://www.springsource.org/spring-web-flowを使用することができます。

春のWebフローWebアプリケーションの「流れ」を実施可能にSpring MVCの拡張機能です。フローは、ビジネス・タスクの実行を通してユーザーを誘導する一連のステップをカプセル化します。これは、複数のHTTPリクエストにまたがっており、状態を持ち、トランザクションデータを扱い、再利用可能であり、本質的に動的で長期的なものです。

これは、Groovyの& GrailsWebflow Doc)にも完全に統合されています。 GroovyはJavaのスクリプトに似た拡張機能ですが、GrailsはSpring、Hibernateなどを使用するWebフレームワークです...

+0

有望な音が聞こえます。 – Jonno

1

個人的に私はフォームを作成するのにDjangoを使用します。

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 

そしてインスタンス化するプレースホルダとのステップを

:私は手順は django.contrib.formtools.FormWizardを使用して、このようなステップのためのFormクラスを作成するために、factoryfunctionを使用して、条件付きのある複雑なマルチステップフォームを、やりましたウィザードオブジェクト:Djangoの1.4フォームウィザードで

def some_form_view(request): 
    Step1 = first_step_factory(request) 
    placeholder = second_step_factory() 
    return SomeWizard([Step1, placeholder])(request) 

が異なる実装によってreplacedてきました、私はまだそれを見ていませんでした。

宣言的な言語の中立性が必要な場合は、XFormsをご覧ください。ブラウザのサポートは少し放棄されたようですが、XSLTs that will transform your XForms into HTMLがあります。

+1

私は同意します、djangoはいくつかの簡単なルールに従うことで複雑さに驚異的です - https://docs.djangoproject.com/en/dev/misc/design-philosophies – Marek

0

データを形成するために何らかの種類のDBを使用していると仮定します。あなたがしたいことは、フォームページ1にいくつかのデータを記入し、フォームを提出して2ページ目を取得するなどです。

オプション1 - PHP Yiiフレームワークを使用します。 CRUD(フォーム)生成サポートが組み込まれており、簡単なフォームを自動的に生成できます。必要なのは、次のフォーム(2ページ目)にリダイレクトするアクションをカスタマイズし、最終フォームにすべてのデータを保存することです。また、良いAjaxベースのバリデーションもあります。
あなたのアプリケーションをdbに接続し、テーブル生成モデルを選択してからCRUDを生成するだけです。これまで5〜10分の仕事をしていました。次に、検証のためにフォーム定義シナリオをカスタマイズし、変更をサポートするために定義済みのアクションを変更する必要があります。
sample app Yii Blogを試すことができます。それはプロセスを詳細に説明することができます。

オプション2 - JavaScriptを使用してください。 要件に応じて簡単なhtmlフォームを作成しました。次に、各ページの送信時にフォームを検証し、フォームデータをJSON/XMLオブジェクトに格納するJavaScript(送信ボタンのonClickイベント)を呼び出します。シリアル化したり、セッションで保持することができます。最終ページの提出時に、アクションタグのフォーム処理スクリプト/ URLにJSON/XMLデータ全体(最終ページのデータを含む)を送信します。

+0

また、このリンクを試してください。 jQueryベースのマルチレベルフォームhttp://www.jqueryrain.com/?vxVbfKIv –

+2

「ajaxベースの検証」と「検証するJavaScript」と言ったときには、検証を行う必要があります。サーバ。初心者は、クライアント側とそこで動作するJavaScriptを信頼しないように教えてください。その意味で、検証のためのAjax *は、惑わされて欺かれているように見えます。素晴らしいUIを提供できますが、安全対策として使用しないでください。 –

+1

@ChrisWesseling、はい。 YiiのAjaxベースの検証では、サーバーからデータを検証し、保存する前にサーバーで再度検証します。 –

関連する問題