1

2 つのエンティティCategoryCriteriaがあり、カテゴリと基準の間の関係は OneToMany (双方向関係) です。翻訳がなければ、フォーム(CategoryType と CriteriaType)などを管理するのに問題はありません。

カテゴリと基準には「libelle」属性が含まれており、これらの属性を英語と別の言語に翻訳したいので、次のようなものがあります。

// Category entity :
 /**
 * @ORM\Column(name="libelle", type="string", length=255)
 * @Gedmo\Translatable
 */
private $libelle; // can't be blank
// other attributes 
// --------

// Criteria entity :
 /**
 * @ORM\Column(name="libelle", type="string", length=255)
 * @Gedmo\Translatable
 */
private $libelle; // can't be blank

しかし、ここでは、GedmoTranslationBundle と A2lix を使用します。

これが私のコードです:

$builder
        ->add('translations', 'a2lix_translations_gedmo', array(
                    'translatable_class' => 'Immo\AnnonceBundle\Entity\Category',
                    'locales' => array('fr', 'en'),
                    'required' => false,
                    'fields' => array(

                        'libelle' => array(
                            'field_type' => 'text',
                            'locale_options' => array(
                                'en' => array(
                                    'label' => 'Libellé du critère (en) :',
                                    'attr' => array('placeholder' => 'Example : Convenience, proximity, etc.')
                                ),
                                'fr' => array(
                                    'label' => 'Libellé du critère (fr) :',
                                    'attr' => array('placeholder' => 'Exemple : A proximité, commodités, etc.')
                                )
                            )
                        )
                        'criterias' => array(
                            'field_type' => 'collection',
                            'label' => ' ',
                            'type' => new CriteriaType(),
                            'allow_add' => true,
                            'allow_delete' => true
                        )
                    )

                )
             )

基準タイプ:

$builder->add('libelle', 'text', array('libelle' => 'Libellé :'))

上記の私の例は機能せず、$form->isValid() が false を返すように見えるエラー メッセージが表示されず、その理由がわかりません。

これを正しく管理する方法がわかりません。これについて説明していただけますか?ありがとう

編集:最初のエラーはトークンの欠落が原因で、現在 $form->isValid() が true であり、このエラーが発生しています。

しかし、'translatable_class' => 'Immo\AnnonceBundle\Entity\Category' のため、Critera のリベルでさえ、Category のオブジェクトです。それを処理するアイデアはありますか?ありがとう

4

1 に答える 1