如何在 EasyAdmin 中配置可翻译实体?
How to configure a Translatable Entity in EasyAdmin?
我在 Symfony 5 项目中使用 Translatable 和 EasyAdmin,我配置了 2 种语言。
问题是我需要能够在 EasyAdmin 中编辑记录的不同语言,我查看了 Translatable、EasyAdmin 和 Symfony 的文档,关于如何将数据库翻译集成到 EasyAdmin 的信息很少。
因此,我在代码方面有点卡住了,我尝试在实体 CRUD 控制器中配置 setTranslationParameters()
并更改 DashboardController
中的一些配置,但是,我不认为这是正确的方法。
关于如何解决这个问题有什么建议吗?
感谢您付出的努力和时间。
截至撰写本文时,EasyAdmin 中不存在此功能,请参阅 Github 上的问题答案 link。
https://github.com/EasyCorp/EasyAdminBundle/issues/4982
但是,可以使用不同的包解决问题:
- 删除
doctrine-extensions/DoctrineExtensions
然后安装 KnpLabs/DoctrineBehaviors
- 安装a2lix/translation-form-bundle
- 创建翻译字段:
<?php
declare(strict_types=1);
namespace App\Controller\Admin\Field;
use A2lix\TranslationFormBundle\Form\Type\TranslationsType;
use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldInterface;
use EasyCorp\Bundle\EasyAdminBundle\Field\FieldTrait;
final class TranslationField implements FieldInterface
{
use FieldTrait;
public static function new(string $propertyName, ?string $label = null, array $fieldsConfig = []): self
{
return (new self())
->setProperty($propertyName)
->setLabel($label)
->setFormType(TranslationsType::class)
->setFormTypeOptions([
'default_locale' => 'cz',
'fields' => $fieldsConfig,
]);
}
}
- 在您的管理员 CRUD 控制器中使用
TranslationField
:
public function configureFields(string $pageName): iterable
{
return [
TextField::new('title', 'title')->hideOnForm(),
TranslationField::new('translations', 'translations', [
'title' => [
'field_type' => TextType::class,
'required' => true,
]
// add more translatable properties into the array
])->setRequired(true)
->hideOnIndex()
];
}
我在 Symfony 5 项目中使用 Translatable 和 EasyAdmin,我配置了 2 种语言。
问题是我需要能够在 EasyAdmin 中编辑记录的不同语言,我查看了 Translatable、EasyAdmin 和 Symfony 的文档,关于如何将数据库翻译集成到 EasyAdmin 的信息很少。
因此,我在代码方面有点卡住了,我尝试在实体 CRUD 控制器中配置 setTranslationParameters()
并更改 DashboardController
中的一些配置,但是,我不认为这是正确的方法。
关于如何解决这个问题有什么建议吗? 感谢您付出的努力和时间。
截至撰写本文时,EasyAdmin 中不存在此功能,请参阅 Github 上的问题答案 link。
https://github.com/EasyCorp/EasyAdminBundle/issues/4982
但是,可以使用不同的包解决问题:
- 删除
doctrine-extensions/DoctrineExtensions
然后安装 KnpLabs/DoctrineBehaviors - 安装a2lix/translation-form-bundle
- 创建翻译字段:
<?php
declare(strict_types=1);
namespace App\Controller\Admin\Field;
use A2lix\TranslationFormBundle\Form\Type\TranslationsType;
use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldInterface;
use EasyCorp\Bundle\EasyAdminBundle\Field\FieldTrait;
final class TranslationField implements FieldInterface
{
use FieldTrait;
public static function new(string $propertyName, ?string $label = null, array $fieldsConfig = []): self
{
return (new self())
->setProperty($propertyName)
->setLabel($label)
->setFormType(TranslationsType::class)
->setFormTypeOptions([
'default_locale' => 'cz',
'fields' => $fieldsConfig,
]);
}
}
- 在您的管理员 CRUD 控制器中使用
TranslationField
:
public function configureFields(string $pageName): iterable
{
return [
TextField::new('title', 'title')->hideOnForm(),
TranslationField::new('translations', 'translations', [
'title' => [
'field_type' => TextType::class,
'required' => true,
]
// add more translatable properties into the array
])->setRequired(true)
->hideOnIndex()
];
}