奏鸣曲形式ChoiceFieldMaskType

问题描述

我正在使用Sonata中的ChoiceFieldMaskType。当一个字段为true时,我想显示一些字段。这是我所做的:

->add('hasArtist',ChoiceFieldMaskType::class,[
                'label' => 'Mettre un artiste sur l\'article?','choices' => [
                    'Oui' => 'true','Non' => 'false',],'map' => [
                    'true' => ['artistName','artistText','artistLink','artistimage'],'required' => true
            ])
            ->add('artistName',TextType::class,['required' => false,'label' => 'Nom de l\'artiste'])
            ->add('artistText','label' => 'Texte pour l\'artiste'])
            ->add('artistLink','label' => 'Lien vers l\'artiste'])
            ->add('artistimage',elfinderType::class,array(
                                   'label' => 'Image de l\'artiste','instance' => 'form','enable' => true,'required' => false,'attr' => array('class' => 'form-control')
                               )
            )

效果很好,当hasArtist设置为yes时,将显示其他字段。错误是当我尝试添加表单时。除hasArtist外,我还有其他必填字段。如果您不填写artistName,artistText等字段,它将从其他字段获取值。这是我的表单代码

->with('Contenu de l\'article')
            ->add('published',CheckBoxType::class,'label' => 'Publier'])
            ->add('title',['required' => true,'label' => 'Titre'])
            ->add('textArticle',TextareaType::class,'label' => 'Contenu de l\'article'])
            ->add('textLink','label' => 'Texte pour le lien'])
            ->add('articleLink','label' => 'Lien vers l\'article'])
            ->add('marketingEtiquette','label' => 'Etiquette Marketing'])
            ->add('mediaArticle',array(
                             'label' => 'Photo de l\'article','required' => true,'attr' => array('class' => 'form-control')
                         )
            )
            ->add('mediaBackground',array(
                             'label' => 'Photo dans le fond de l\'article','attr' => array('class' => 'form-control')
                         )
            )
            ->add('position',ChoiceType::class,array(
                'label' => 'Position dans la page','choices' => array(
                    'Bloc haut de page' => 'top','Bloc bas de page' => 'bottom'
                )
            ))
            ->add('positionText',array(
                'label' => 'Position du texte par rapport au média','choices' => array(
                    'Texte à droite' => 'right','Texte à gauche' => 'left'
                )
            ))
            ->add('hasArtist','attr' => array('class' => 'form-control')
                               )
            )
            ->end();

然后我得到一个错误

An exception occurred while executing 'INSERT INTO home_article (home_article_title,home_article_text,home_article_text_link,home_article_link,home_article_marketing_etiquette,home_article_artist_name,home_article_artist_text,home_article_artist_link,home_article_artist_image,home_article_media_article,home_article_media_background,home_article_published,home_article_has_artist,home_article_position,home_article_position_text) VALUES (?,?,?)' with params [" Underground","blabla.","LIRE","https:\/\underground",null,"\/uploads\/Z--Banner_1.webp",1,"top","right"]: sqlSTATE[23000]: Integrity constraint violation: 1048 Column 'home_article_media_article' cannot be null

因为我在home_article_media_article上添加一个不为null的约束,该约束在表单代码上为“ mediaArticle”。 我该如何解决?我如何认将null设置为空,但是如果有人在字段上写东西,那么它将采用此值? 我不知道是否很清楚,我也不知道该怎么解释。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)