web-dev-qa-db-ja.com

A PHPおよびjQueryフォームの作成と検証のライブラリは利用できますか?

元の質問

クライアント側(これがjQueryの出番です)とサーバー側の検証の両方でPHP)でフォームを作成するための、十分にテストされた、できれば成熟したライブラリがありますか?

理想的には、フォームはPHPクラスから生成されるか、プレーンHTMLとして記述されてala Agavi として解析されます)。正しいjQueryフックが自動的に作成されます。含まれているjQueryクライアント側の検証を実行できるようにライブラリによって。

私が定期的に行っている仕事の1つは、古き良き連絡フォームのバリエーションです。この作業を標準化して、毎回同じベストプラクティスコードを削除できるようにしたいと思います。これを念頭に置いて、PHPクラスによって生成されたHTMLは、必要に応じて追加のCSSフックを追加できるように十分に優れている必要があります。

どんな提案もありがたく受けました。


更新

私は自分が見つけたオプションと他の人が以下に提案したオプションをくまなく調べて検討してきました。現時点では、すべてのプロジェクトに対して行った少量のテストと調査から、品質について次の順序でプロジェクトをランク付けします。

  1. ValidForm Builder
  2. jFormer
  3. HTML_QuickForm2 (クライアント側の検証を機能させることができれば、これはjFormerよりも高くジャンプするはずです!)
  4. php-form-b​​uilder-class
  5. Symfonyを使用してください! (フォームのレンダリングと検証のためのMVCフレームワーク全体はやり過ぎです)

私はまだ正直な選択肢のどれにも確信が持てず、なぜこれらのプロジェクトに着手する人々がいくつかのしっかりした十分にテストされたコンポーネントから始めないのか疑問に思っています。たとえば、私は次の組み合わせを考えたでしょう:

テストされたコンポーネントの上で作業し、Niceライブラリを作成するための優れた安定したベースを提供します。

また、PHPクラスからHTMLを生成するのではなく、HTMLを解析するライブラリに興味がある場合は、 Minacl というプロジェクトを見つけました。元の質問で述べた Agavi オプションのように。

40
Treffynnon

ValidForm Builder を使用できます。要件に完全に一致します。PHPで検証ルールを使用してフォームを定義でき、jQueryとクライアント側の検証を使用してフォームを生成します。

機能リスト(彼らのサイトから取得):

  • APIは、XHTML Strict1.0準拠のコードを生成します。
  • トラフィックのオーバーヘッドを最小限に抑えるためのクライアント側のフィールド検証。
  • サーバー側でのフィールド検証。検証ルールを適用し、SQLインジェクションによるフォームの焼き戻しを防ぎます。
  • クライアント側の検証は、ユーザーの満足度を向上させるためにインラインで表示されます。実際には何も教えてくれない迷惑なポップアップはもうありません。
  • 複雑なフォーム構造を簡単に作成できます。
  • DOM操作に人気のあるjQueryJavascriptライブラリを使用します。
  • CSSを使用して完全にカスタマイズ可能。
  • HTMLとプレーンテキストの両方でフォームメーラーのフィールドサマリーを自動的に作成します。
  • オープンソースであるため、完全に無料です( GitHubリポジトリはこちら )!
16
Tokk

2017年に更新

アジャイルUI はPHP UIコンポーネントライブラリ(およびatk4.3の後継)であり、次のようなものが含まれます。

すべてのコンポーネントには、一貫性のあるシンプルなPHPインターフェイス:

_$form = new \atk4\ui\Form();
$layout->add($form);
$form->setModel(new Country($db));
_

CRUDを使用する場合は、_\atk4\ui\CRUD_を使用してください。アジャイルUIは、カスタムコンポーネントを追加するためのツールも提供します。

enter image description here

代替ソフトウェアとの比較:

  • フォーム$form->render()またはWebアプリ全体のHTMLを出力します。
  • セマンティックUI で自動的にスタイル設定
  • サーバー側の検証。エラーをインラインで表示します。
  • フォームのレイアウト
  • サポートjQueryUIが含まれています。
  • アジャイルデータ 、SQL、NoSQLを介してデータを格納します
  • カスタムHTMLテンプレートをサポートする
  • オープンソースでMITの下でライセンス供与
7
romaninsh

HTML_QuickForm2 でクライアント側の検証を実行する際の問題は正確には何ですか?

動作するにはquickform.jsファイルが必要です。ファイルはパッケージとともにインストールされますが、フォーム出力に自動的に含まれません。最近、この問題をより明確にするために docs を更新しました。

また、あなたの質問以来、QF2にはいくつかのリリースがあり、いくつかのJS関連のバグが潰されました。もう一度試してみることを検討してください。安定したリリースを目指しており、Really Soon Nowであり、フィードバックをお待ちしています。

1
Alexey Borzov

私が遭遇したオプションは jFormer ですが、履歴が非常に短く、PHPコードは、複数のクラスでいっぱいの巨大な3000行のファイルでは望ましいものではありません。モジュラーアプローチを採用していません。

1
Treffynnon

たぶんあなたは Symfony フレームワークを使うことができます。 Model-View-Controllerレイヤーと、モデルからの自動フォーム生成を提供します。多くの検証オプションがあります。しかし、JQueryのクライアント側の検証を統合するためにもいくつかの変更が必要だと思います。

0
Alp

jquery-ahm というjQueryプラグインに出くわしました。検証ロジックをサーバーに移動しますが、JavaScriptを使用してクライアントで実行します。ページの下部に、フォーム検証の例が表示されます。

HTMLマークアップ:

<form id="form" action="/a.form" method="post" class="ahm">
<p>Name</p>
<input name="name" id="name" value="" type="text">
<p>Email</p>
<input name="email" id="email" value="" type="text">
<p>Password</p>
<input name="password" id="password" value="" type="text">
<br><input value="Submit Form" type="submit">
</form>

PHPコード:

<?php
// catch errors
foreach (array("name", "email", "password") as $key) {
    if (empty($_POST[$key])) {
        $error["#$key/addClass"] = "error";
        $error["#$key/after"]    = "<span class="error">Please enter $key</span>";  
    }
}

// get response
if (!empty($error)) {
    $reset["input.error/removeClass"] = "error";
    $reset["span.error/remove"]       = "";
    $response = $reset + $error;    // reset errors before applying new ones
} else {
    $response["#form/replaceWith"] = "<strong>Form successfully submitted</strong>";
}

// return response
return $response;
?>

結果:

Form output

0
Alp

今日PEARリポジトリを調べていると、 HTML_QuickForm2 が新しいリリースを作成し、クライアント側の検証もサポートするようになりました。ただし、jQueryは使用されていません。その仕事のために独自のJSフレームワークを作成しました。

0
Treffynnon