問題タブ [zend-form2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
98 参照

forms - Doctrine 2エンティティにバインドされた後、ZF2フォームから「その他の」データを取得する方法は?

Doctrine 2 エンティティの注釈を使用して作成したフォームがあります。(はい、遅いことはわかっています。それが私が学んだ方法であり、レガシーコードで使用しています。しかし、これはおそらくゼロから作成されたフォームに適用されるでしょう)

とにかく、これが状況です。エンティティには、名前、電子メール、性別など、ユーザーにとって非常に標準的なものがあります。また、「ロール」と呼ばれる一対多のプロパティもあります。そこで、AnnotationBuilder で作成したフォームを使用し、select 要素 (「roleId」という名前) を追加して、ユーザーがユーザーのロールを選択できるようにしました。そこから、フォームが検証されたら、roleId の値を取得し、対応するエンティティをデータベースから取得して、次に進み$user->setRole($role)ます。

ここで困ってしまいます。を使用$form->bind($user)し、$form->isValid()次に を呼び出すと$form->getData()、フォームからフィルタリングおよび検証されたデータの配列ではなく、ユーザー エンティティになります。

では、この状況をどのように処理すればよいでしょうか。エンティティにバインドされた後、フォームからフィルター処理および検証されたすべてのデータのフラットな配列を取得する方法はありますか?

0 投票する
1 に答える
250 参照

php - Zend Framework 2 を使用した複数ページのフォーム

2つの異なるフォームを作成したい。最初のフォームでは、ユーザーはデータを入力できます。最初のステップで指定されたデータに応じて、2 番目のフォームで事前に入力されたデータを準備したいと考えています。

そうすることは可能ですか?

私の英語でごめんなさい。

ありがとう

0 投票する
1 に答える
1066 参照

forms - 無効な値が送信された場合でも、select からの ZF2 フォーム検証値

ZF2 アプリケーションに select 要素を含むフォームがあります。ZF1 では、バリデーターを自動的に追加して、ユーザーが無効な値を投稿しようとしていないことを確認していました。

そこで、冗談で、Firebug を使用してオプションの 1 つの値を変更し、それを送信するとどうなるかを確認することにしました。結果:見事合格。言うまでもなく、これは良くありません。

select オプションに関連するコードは次のとおりです。

(注: $roleOptions はパラメーターとしてフォームに渡されます)

バリデータ コードの関連部分は次のとおりです。

(明らかに、$notEmpty は NotEmpty バリデーターのインスタンスです)

何が起きてる?ZF2 は、受け取った値が元々オプションのリストの一部だったものであることを確認するバリデーターを追加しなくなりましたか? オプションを選択するには、バリデーターを手動で追加する必要がありますか?

編集:ドキュメントを確認したところ、選択要素が配列内バリデーターを自動的に追加すると書かれています。機能するはずですが、そうではありません。サーバー側で値を変更してみましたが、結果は同じでした。バリデーターは無効な値を取得していません。

はい、フォームが有効かどうかを確認しています。

編集 #2: わかりやすくするために、フォーム全体のコードを次に示します。

0 投票する
2 に答える
891 参照

php - Zend\Form\Collection (DoctrineModule ObjectSelect を含むフィールドセット) のすべての要素を削除する

ZF2フォームとDoctrineModuleハイドレーターを使用して、単純なCRUDシステムでエンティティを作成/更新するZF2アプリケーションに取り組んでいます。Zend\Form\Element\Collectionエンティティ (Union) は別のエンティティ (Team) との Doctrine OneToMany 関連付けを持っており、その関連付けはフォーム サイトの で表されます。新しいエンティティを作成するとき、またはフォームを使用して既存のエンティティを更新するときに、既存のエンティティの関連付けコレクションを空にするという 1 つのケースを除いて、すべてが問題なく動作します。コレクションのすべての要素を削除して [保存] をクリックすると、フォームが跳ね返され、コレクションの既存の各要素にエラーが表示されますValue is required and can't be empty

問題を示すビデオ: http://youtu.be/3ucRb6X61c8

コード:

問題は InputFilter に要約されるようですが、何が問題なのかを正確に突き止めることはできません。コレクションの N 個のエントリのうち (N-1) 個まで削除すると問題なく動作するため、InputFilter 構造自体には問題はありません。おそらく、POST されたコレクションが空の場合、コレクションZend\Formの各要素に割り当てられた既存の NotEmpty バリデーターを削除しないのteamsでしょうか?

Union フィールドセットにはカスタム入力フィルターが用意されていますが (こちらを参照teams)、コレクション要素には入力がリストされていません。また、カスタム InputFilter を完全に削除することと、teamsコレクションに適切な InputFilter 定義を追加することの両方を試みましたが、最終結果は同じです。

私がここで間違っていることについて何か洞察を持っている人はいますか?

0 投票する
1 に答える
337 参照

mongodb - 埋め込まれた Doctrine ドキュメントを Zend フィールドセットに取り込む方法は?

ZF2+Doctrine+DoctrineMongoODM モジュールを使用しています。ドキュメントにPersonドキュメントが埋め込まれていHouseます:

そう

ドキュメントの共通フィールドHouseが保存され、データが取り込まれます。埋め込まれたドキュメント フィールドを編集するために name を含む fieldset を使用するpersonため、 と を含む入力要素のセットがありname=person[firstName]ますname=person[lastName]

埋め込みドキュメントのフィールドは保存されますが、フォームには入力されません。

回避策を見つけました-$vals = (array) $element->getValue();フィールドセットオブジェクトで値を取得してから

$name = preg_replace("/^(.*)\[(.*)\]$/", "\\2", $elem->getName()); $elem->setValue($vals[$name]);各フィールドセット要素に対して。

より良い解決策はありますか?