我正在使用 KNP 教义行为进行翻译。它适用于固定装置,但根本不适用于 Sonata admin。
我的最后一个问题是“无法在...中找到“翻译”的关联目标类。
表单小部件我正在使用 A2lix\TranslationFormBundle。这是奏鸣曲表单生成器的代码:
$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;
}
}
我也试图创建表单映射器,但它不会将数据保存到数据库并且不显示翻译。