18

私はbackbone.jsアプリケーションのsymfony2バックエンドに取り組んでいます。モデルとフォームがあります。

ただし、backbone.jsは、モデルを作成/更新するときにいくつかの追加のプロパティをREST APIに送信し、フォームを検証するのに苦労しています。

symfony2でフォームを取得して追加のデータを受け入れるにはどうすればよいですか、またはデータをフォームにバインドする前に特定のキーをドロップするにはどうすればよいですか?

4

4 に答える 4

64

オプション「allow_extra_fields」を使用する必要があります。

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
        $resolver->setDefaults(
        array(
            'allow_extra_fields' => true
        )
    );
}

symfony 2.8以降では、setDefaultOptions(OptionsResolverInterface $ resolver)の代わりにconfigureOptions(OptionsResolver $ resolver)を使用します

于 2014-10-08T22:00:26.880 に答える
16

property_pathはsf2.1で非推奨になりました。代わりに、「マップされた」を使用してください

$builder
    ->add("firstName", "text")
    ->add("lastName", "text")
    ->add("tac", "checkbox", array(
        "mapped" => false
    )
);
于 2013-02-08T07:56:16.950 に答える
12

Symfony2に追加のデータを受け入れさせるには、フォームビルダーに追加のフィールドを追加し、それらのproperty_pathオプションをfalseに設定します。

例:

$builder
    ->add('my_additional_field', 'checkbox', array(
        'mapped' => false,
    ));

データをバインドする前にキーを削除する必要はありません。とにかく無視されます。

于 2012-06-03T10:15:39.357 に答える
2

イベントリスナーをリッスンしFormEvents::BIND_CLIENT_DATA(またはFormEvents::PRE_BIND2.1 devを使用している場合)、フィールドを追加/削除できます。このクックブックのエントリを参照してください。

于 2012-06-03T09:22:00.017 に答える