Я работаю на многоязычном веб-сайте и хочу, чтобы пользователи могли создавать Категории (и другие объекты) на многих языках.
Вот выдержка из моей сущности Категория:
PHP
<?php
/**
* @ORM\Entity(repositoryClass="App\Repository\CategoryRepository")
*/
class Category implements Translatable
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @Gedmo\Translatable
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @Gedmo\Translatable
* @ORM\Column(type="text", nullable=true)
*/
private $description;
// ... getters and setters ...
}
?>
Gedmo хранит все переводы для всех моих сущностей в таблице с такой структурой:
--------------------------------------------------------------
| id | locale | object_class | field | foreign_key | content |
--------------------------------------------------------------
Где object_class относится к классу сущностей (например, App \ Entity \ Category), а foreign_key относится к текущей переведенной сущности.
На самом деле переводы хорошо отображаются в соответствии с текущей локалью вurl, и контент адаптируется, когда пользователь меняет язык.
Пользователь также может добавлять некоторые категории, вот мой CategoryType:
<?php
class CategoryType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, [
'attr' => [
'placeholder' => 'Category name'
],
'label' => 'Category name',
])
->add('description', TextareaType::class, [
'required' => false,
'attr' => [
'placeholder' => 'Category description',
],
'label' => 'Category description',
]
)
->add('send', SubmitType::class, [
'label' => 'Send'
])
->add('image', FileType::class, [
'label' => 'Illustration',
"mapped" => false,
"required" =>false,
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Category::class,
]);
}
}?>
Дело в том, что когда новыйкатегория добавлена, имя и описание устанавливаются только для текущей локали.Когда мы хотим обновить категорию для данной локали, пользователь должен перейти к форме, но с использованием локали, для которой он хочет изменить категорию.
Это функционально, но не совсем просто.
Я попробовал комплект a2lix , но последняя версия больше не совместима с Gedmo, и я хотел бы избежать создания EntityTranslation со всеми переводимыми полями для Entity.
Итак, вот мой вопрос: можно ли разрешить пользователю вводить имена и описания для разных языков, используя только одну форму?