は、私は選択肢のリストを取得し、choices
オプションsymfonyのフォームイベント:私は、AJAXリクエストのフィールドでSELECT2を使用してsymfonyのフォームに取り組んでいますChoiceTypeフィールド戻りヌル予期せ
PRE_SUBMIT
イベントに耳を傾けます
$opts = $config->getOptions();
$opts['choices'] = $listImages; //array of Image object
しかし、私は、フォームで選択した値を取得し、閉鎖にそれを使用し、フィールドを永続化するとき、NULL値を持っているのvar_dumpでPRE_SUBMIT
イベントで ので、私はPOST_SUBMIT
イベントフィールドでのvar_dumpをやっています本当に値としてnullを持っています。
class ArticleType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('image', ChoiceType::class, array(
'expanded' => false,
'multiple' => false))
//other field
;
$formModifier = function (FormInterface $form, $image) use ($options) {
$listImages = $options['em']->getRepository('AlmotivAppBundle:Image')->findBy(array(
'id' => $image
));
if (!$listImages) {
$form->add('image')->addError(new FormError(
'Nous n\'avons pas p trouver l\'image, veuiller choisir une autre'
));
}
//die(var_dump($listImages)); //array of Image object
$config = $form->get('image')->getConfig();
$opts = $config->getOptions();
$opts['choices'] = $listImages;
$typeName = get_class($config->getType()->getInnerType());
$form->add('image', $typeName, $opts);
//die(var_dump($form->get('image')->getConfig()->getData())); //return null
};
$builder->get('image')->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$image = $event->getData();
//die(var_dump($image)); //return 10
$formModifier($event->getForm()->getParent(), $image);
}
);
と私はフレームワークのV3.1を使用しています:と私は
マイ以下にformType逃したものを見ていません。 もっと必要な方は尋ねてください。
DBにそれを保持するには、フィールドに 'ManyToOne'の関係があります。値が有効でないようなエラーが表示されない場合は、選択したオプションの値をDoctrineに渡す必要があります。私はあなたが建設後にフィールドの設定を変更することはできませんが、私は間違っている場合は私を修正することができますが、私はそれをやったと私はデータを失った知っているそれを上書きすることができます。今質問は、 'imagesList'を' $ options [choices] 'に渡してデータフィールドを失わないようにするにはどうすればいいですか? '' POST_SUBMIT'イベントで私が提出してしまった。私は再度追加フィールドiが閉鎖に '$のevent'を渡す際の問題の原因であると' $ event->のgetData()をやってないと思う –
と@JovanPerovicデータは、その後、私はPRE_SUBMITイベントでフィールドを再度追加し、 '$ event->をgetForm()を実行したときに謎の事がある;' POST_SUBMITで私のイメージフィールドは 'null'なので値と私の他のフィールドが正しい値を持っています。どのように私はこれを処理できますか? –
私はこの1を扱う2つの解決策を持っています。なぜなら、イメージが常にヌル値を持つ理由を理解できないので、フォームにデータを設定することです。 2 - 使用してunmappedイベントを使用してテキストの種類(私の記事のエンティティとのmanytoone関係を持っている原因画像)、考えている最良の方法ではない送信されたデータで私の画像フィールドを追加しますが、私は唯一のものです事は 'EntityType'と連携して、フィールドオプションに「選択肢」の可能性について渡すために、この場合' PRE_SUBMIT'と 'PRE_SET_DATA'で、フォームイベントを使用することですので、見つかった) –