Я использую форму перевода A2lix среди поведения KNP Doctrine.
Поля отображаются правильно в форме, и они также отправляются правильно (я проверял в отладке), но они не сохраняются в базе данных.
Вот мой код:
Тип формы
/**
* 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;
}
}
Есть идеи?
Вам необходимо определить связь между вашей сущностью и сущностью перевода:
Вспомогательное оборудование:
/**
* @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;
Вы активировали переводимое поведение knp в своем файле config.yml?
knp_doctrine_behaviors:
blameable: ~
geocodable: ~
loggable: ~
sluggable: ~
soft_deletable: ~
translatable: true