1

私はそれが私のWebアプリケーション large webformの中心です。フォームは実際には複数の html フォーム要素で構成されており、その多くは必要に応じて AJAX 経由で読み込まれます。Yii

フォームのサイズと複雑さのため、複数の保存ボタンや送信ボタンを配置することは現実的ではありません。データベース内の各フィールドは、jeditable または jeditable に似た機能を使用して、新しい値をサーバーに非同期的に AJAX することによって編集されるため、むしろ更新したいと思います。

誰かがこのようなことをしましたか?理論的には、エンドポイントを設定し、AJAX各コントロールにその名前、新しい値、および実行するCRUD操作を渡すことができると考えています。次に、エンドポイントは、ある種のマップに基づいてリクエストを適切にルーティングし、製品を返すことができます。誰かが以前にこの問題を解決しなければならないように思えたので、車輪の再発明に何時間も無駄にしたくありません。

アーキテクチャ/実装に関するご意見をお寄せいただきありがとうございます。

4

2 に答える 2

1

同様の状況で、" " 属性を避けて、Yii 標準 (Ajax 検証を使用できます) による簡単な検証のためだけにCActiveFormを使用することにしました。requiredそしてもちろん、フォームの論理構造を見やすく保つためです。

一般的に、あなたは正しいです。私は手動でjQueryを使用してAJAXリクエスト(およびその他のアクション)をコントローラーに生成し、必要に応じてそこで処理しました。

そのため、コントローラー (リクエストのパラメーターを分析する) とカスタム jQuery (グループ セレクターを使用) で CRUD を使用することはできますが、CActiveForm直接行うことはほとんどできません (そして、それは良いことです: コンパクト化がモデルのロジックと構造を常に打ち負かす必要はありません)。 .

PHP で JavaScript を使用した複合ソリューションは、重要なアプリケーションの柔軟性に影響を与えます。

于 2012-07-25T06:21:29.987 に答える
0

昨夜寝た後、こんな記事を見つけました。

個々の入力ではなく、フォームの jQuery フォーカス/ぼかし

各フィールドを更新する代わりに、クライアントでこれの修正版を使用して、AJAX を介して各フォームを更新しています。各フォームは、非アクティブ状態が 2 秒間続くと、そのデータを自動的に送信します。欠点は、ブラウザーがクラッシュした場合にクライアントが一部のデータを失う可能性があることですが、利点は、ほとんどの場合、Yii の組み込みコントローラー アクションを使用でき、多くのカスタム PHP を記述する必要がないことです。私のフォームは小さいですが、たくさんあるので、今のところうまくいっているようです。

優れた情報を提供してくれたアレクサンダーに感謝し、助けてくれたアフナンに感謝します:)

于 2012-07-25T15:39:07.240 に答える