4

私の ZF2 は、inputFilters をモデルに設定し、検証中にフォームに適用するという、どこでも見たことのある単純な構造を使用しています。しかし、ここで大きな壁にぶち当たりました。あるモデルに対して検証する必要があるいくつかのフィールドと、別のモデルに対して検証する必要があるいくつかのフィールドを持つフォームの検証をどのように処理しますか?

私のシナリオ: 単一のフォームを使用して、データベースの 2 つのテーブルに 2 つのエントリを挿入しています (ユーザーを追加し、そのユーザーにリンクされた寄付を追加します)。一部のフィールドは 1 つのテーブルに配置され、その他のフィールドは 2 番目のテーブルに配置されます。

前述したように、入力フィルターはモデル レベルで保存されます。

私のシナリオ全体が1つのモデル/テーブルのみを含む場合、たとえば1つの寄付を保存し、他には何も保存しない場合、次のようになります。

$donation = new Donation();

$form->setInputFilter($donation->getInputFilter());
$form->setData($request->getPost());

if ($form->isValid()) {

$donation->exchangeArray($form->getData());
$this->getDonationTable()->saveDonation($donation);

上記のことができます。

しかし、2 つのモデルから収集している 2 つの inputFilters のセットに対してフォーム データを分析および検証しようとしています。1 つは寄付モデルに送られるデータ用で、もう 1 つはユーザーに送られるデータ用です。したがって、私は次のようなものを求めています:

$donation = new Donation();
$user = new User();

$form->setInputFilter($donation->getInputFilter());

次に、次のようなものを追加します:(明らかに存在しません)

$form->addInputFilter($user->getInputFilter());

だから私は続けることができました...

$form->setData($request->getPost());

if ($form->isValid()) {

    // add donation
    // add user

これについてインターネットで何も見つけられなかったことに驚いています。モデルとinputFiltersの使用方法が間違っていますか? あるモデルに対して検証する必要があるいくつかのフィールドと、別のモデルに対して検証する必要があるいくつかのフィールドを持つフォームの検証をどのように処理しますか?

4

1 に答える 1