クライアント側(これがjQueryの出番です)とサーバー側の検証の両方でPHP)でフォームを作成するための、十分にテストされた、できれば成熟したライブラリがありますか?
理想的には、フォームはPHPクラスから生成されるか、プレーンHTMLとして記述されてala Agavi として解析されます)。正しいjQueryフックが自動的に作成されます。含まれているjQueryクライアント側の検証を実行できるようにライブラリによって。
私が定期的に行っている仕事の1つは、古き良き連絡フォームのバリエーションです。この作業を標準化して、毎回同じベストプラクティスコードを削除できるようにしたいと思います。これを念頭に置いて、PHPクラスによって生成されたHTMLは、必要に応じて追加のCSSフックを追加できるように十分に優れている必要があります。
どんな提案もありがたく受けました。
私は自分が見つけたオプションと他の人が以下に提案したオプションをくまなく調べて検討してきました。現時点では、すべてのプロジェクトに対して行った少量のテストと調査から、品質について次の順序でプロジェクトをランク付けします。
私はまだ正直な選択肢のどれにも確信が持てず、なぜこれらのプロジェクトに着手する人々がいくつかのしっかりした十分にテストされたコンポーネントから始めないのか疑問に思っています。たとえば、私は次の組み合わせを考えたでしょう:
テストされたコンポーネントの上で作業し、Niceライブラリを作成するための優れた安定したベースを提供します。
また、PHPクラスからHTMLを生成するのではなく、HTMLを解析するライブラリに興味がある場合は、 Minacl というプロジェクトを見つけました。元の質問で述べた Agavi オプションのように。
ValidForm Builder を使用できます。要件に完全に一致します。PHPで検証ルールを使用してフォームを定義でき、jQueryとクライアント側の検証を使用してフォームを生成します。
機能リスト(彼らのサイトから取得):
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は、カスタムコンポーネントを追加するためのツールも提供します。
代替ソフトウェアとの比較:
HTML_QuickForm2 でクライアント側の検証を実行する際の問題は正確には何ですか?
動作するにはquickform.jsファイルが必要です。ファイルはパッケージとともにインストールされますが、フォーム出力に自動的に含まれません。最近、この問題をより明確にするために docs を更新しました。
また、あなたの質問以来、QF2にはいくつかのリリースがあり、いくつかのJS関連のバグが潰されました。もう一度試してみることを検討してください。安定したリリースを目指しており、Really Soon Nowであり、フィードバックをお待ちしています。
私が遭遇したオプションは jFormer ですが、履歴が非常に短く、PHPコードは、複数のクラスでいっぱいの巨大な3000行のファイルでは望ましいものではありません。モジュラーアプローチを採用していません。
たぶんあなたは Symfony フレームワークを使うことができます。 Model-View-Controllerレイヤーと、モデルからの自動フォーム生成を提供します。多くの検証オプションがあります。しかし、JQueryのクライアント側の検証を統合するためにもいくつかの変更が必要だと思います。
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;
?>
結果:
今日PEARリポジトリを調べていると、 HTML_QuickForm2 が新しいリリースを作成し、クライアント側の検証もサポートするようになりました。ただし、jQueryは使用されていません。その仕事のために独自のJSフレームワークを作成しました。