A2lix形式不适用于KNP Doctrine Behaviors

时间:2015-05-20 09:38:03

标签: php symfony doctrine a2lix-translation

我在KNP教义行为中使用A2lix翻译形式。

字段在表单中正确显示,并且它们也已正确发送(我已在调试中检查过),但它们未保存在数据库中。

这是我的代码:

表单类型

/**
     * Buildform function
     *
     * @param FormBuilderInterface $builder the formBuilder
     * @param array                $options the options for this form
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('code', 'text', [
                'required' => true,
            ])
            ->add('translations', 'a2lix_translations');
    }

辅助实体

<?php

namespace SocialCar\CoreBundle\Entity;

use Knp\DoctrineBehaviors\Model as ORMBehaviors;

class Accessory
{
    use ORMBehaviors\Translatable\Translatable;

    /**
     * @var integer
     */
    private $id;

    /**
     * @var string
     */
    private $code;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set code
     *
     * @param string $code
     * @return Accessory
     */
    public function setCode($code)
    {
        $this->code = $code;

        return $this;
    }

    /**
     * Get code
     *
     * @return string 
     */
    public function getCode()
    {
        return $this->code;
    }
}

附件翻译

<?php

namespace SocialCar\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Model as ORMBehaviors;

/**
 * AccessoryTranslation
 */
class AccessoryTranslation
{
    use ORMBehaviors\Translatable\Translation;

    /**
     * @var string
     */
    private $name;


    /**
     * Set name
     *
     * @param string $name
     * @return AccessoryTranslation
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string 
     */
    public function getName()
    {
        return $this->name;
    }
}

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您需要定义您的实体和翻译实体之间的关系:

附件:

/**
 * @ORM\OneToMany(targetEntity="AccessoryTranslation", mappedBy="accessory", cascade={"persist", "remove"})
 */
protected $translations;

附件翻译:

/**
 * @ORM\ManyToOne(targetEntity="Accessory", inversedBy="translations")
 * @ORM\JoinColumn(name="accessory_id", referencedColumnName="id", onDelete="CASCADE")
 */
protected $object;

答案 1 :(得分:0)

您是否在config.yml文件中激活了knp可翻译行为?

knp_doctrine_behaviors:
    blameable:      ~
    geocodable:     ~     
    loggable:       ~
    sluggable:      ~
    soft_deletable: ~
    translatable:   true