Я использую поведения KNP doctrine для переводов. Он работает из фикстур, но не работает в админке Sonata вообще.
Моя последняя проблема - «Невозможно найти целевой класс ассоциации для« переводов »в ...».
Форма формы виджет Я использую A2lix \ TranslationFormBundle. Это код из конструктора форм Sonata:
$formMapper
->add('id', HiddenType::class)
->add('countOfDays')
->add('countOfAccounts')
->add('price')
->add('profileType')
->add('translations', TranslationsType::class, [
'fields' => [
'name' => [
'field_type' => TextType::class,
'label' => 'Заголовок'
],
],
]);
Я настроил сущности, добавил фикстуры с данными для двух языков и протестировал в twig. Все нормально работает.
namespace App\Entity;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Contract\Entity\TranslatableInterface;
use Knp\DoctrineBehaviors\Contract\Entity\TranslationInterface;
use Knp\DoctrineBehaviors\Model\Translatable\TranslatableTrait;
/**
* @ORM\Entity()
*/
class Plan implements TranslatableInterface
{
use TranslatableTrait;
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* Call
*
* @param string $method
* @param array $args
* @return string
*/
public function __call($method, $args)
{
if (!method_exists(self::getTranslationEntityClass(), $method)) {
$method = 'get' . ucfirst($method);
}
return $this->proxyCurrentLocaleTranslation($method, $args);
}
public function getId(): ?int
{
return $this->id;
}
}
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Contract\Entity\TranslationInterface;
use Knp\DoctrineBehaviors\Model\Translatable\TranslationTrait;
/**
* @ORM\Entity()
*/
class PlanTranslation implements TranslationInterface
{
use TranslationTrait;
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
}
Я также пытался создать преобразователь форм, но он не сохраняет данные в БД и не показывает переводы.
И я получаю следующую ошибку: