在symfony 2.5中使用mongodb时,我对bundle“a2lix/翻译表单bundle”有问题。我想我做的一切都和文档中的一样,但是我缺少“必需的选项”类。
我的产品:
/**
* Class Product
* @MongoDB\Document(repositoryClass="MyBundle\ProductBundle\Repository\ProductRepository")
* @Gedmo\TranslationEntity(class="MyBundle\ProductBundle\Document\ProductTranslation")
*/
class Product implements Translatable
{
/**
* @MongoDB\Id
*
*/
protected $id;
/**
* @MongoDB\String
* @Gedmo\Translatable
*/
protected $name;
/**
*
* @MongoDB\ReferenceMany(targetDocument="MyBundle\ProductBundle\Document \ProductTranslation", mappedBy="object", cascade={"all"})
*
*/
private $translations;
public function __construct()
{
$this->translations = new ArrayCollection();
}
public function __toString()
{
return $this->getName();
}
/**
* Get id
*
* @return id $id
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return self
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string $name
*/
public function getName()
{
return $this->name;
}
/**
* Set translations
*
* @param ArrayCollection $translations
* @return Product
*/
public function setTranslations($translations)
{
foreach ($translations as $translation) {
$translation->setObject($this);
}
$this->translations = $translations;
return $this;
}
/**
* Get translations
*
* @return ArrayCollection
*/
public function getTranslations()
{
return $this->translations;
}
这是我的产品翻译:
class ProductTranslation extends AbstractPersonalTranslation
{
/**
* @MongoDB\ReferenceOne(targetDocument="MyBundle\ProductBundle\Document\Product", inversedBy="translations")
*
*/
public $object;
}
我仍然觉得“必选选项”类丢失了。“错误,我不知道是什么问题。
最佳答案
您得到这个错误是因为MongoDB ODM映射在引用时创建了一个字段映射。
例如,当您有manytoone或onetomany关系时,orm不会创建字段映射。
所以a2lix将object
字段视为通常的映射字段。由于表单生成器解析类似于object
类型的document
字段,因此需要提供class
选项才能使其工作。
但是,如果您提供这个选项,那么您的object
字段将被呈现为可翻译字段,这肯定很糟糕。
所以请试试这个:
->add('translations', 'a2lix_translations', [
'exclude_fields' => [
'object',
]
])
它将帮助你解决这个特殊的问题。
关于php - Symfony 2,MongoDB + a2lix/translation-form-bundle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31136722/