我有2个实体类别和条件,类别和条件之间的关系是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
)
)
)
)
CriteriaType:
$builder->add('libelle', 'text', array('libelle' => 'Libellé :'))
上面我的例子,不工作,我没有任何错误信息,似乎$ form-> isValid()返回false,我不知道为什么。
我不知道如何正确管理这个问题,你能否对此有所了解?感谢
编辑: 丢失令牌的第一个错误,现在$ form-> isValid()为真,我有这个错误。
但是因为'translatable_class'=> 'Immo \ AnnonceBundle \ Entity \ Category',即使是Critera的libelle也是Category的对象。有没有想过要处理?感谢
答案 0 :(得分:2)
您需要为当前的Category和Criteria实体创建相应的CategoryTranslation和CriteriaTranslation实体。接下来:
CategoryType:
$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é de la categorie (en) :',
'attr' => array('placeholder' => 'Example : Convenience, proximity, etc.')
),
'fr' => array(
'label' => 'Libellé de la categorie (fr) :',
'attr' => array('placeholder' => 'Exemple : A proximité, commodités, etc.')
)
)
)
)
)
)
->add('criteria', 'collection', array(
'type' => new CriteriaType(),
'allow_add' => true,
'allow_delete' => true,
))
CriteriaType:
$builder
->add('translations', 'a2lix_translations_gedmo', array(
'translatable_class' => 'Immo\AnnonceBundle\Entity\Criteria',
'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.')
)
)
)
)
)
)