在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-b​​undle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31136722/

10-12 15:18