dzejson91 / translationentitybundle
1.0
2018-11-26 23:31 UTC
Requires (Dev)
- php: >=5.6
- doctrine/common: >=2.5.0
- doctrine/orm: >=2.5.0
- symfony/dependency-injection: >2.8
- symfony/http-kernel: >=3.4
This package is not auto-updated.
Last update: 2024-10-02 21:01:45 UTC
README
安装
composer install dzejson91/entitytranslationbundle
配置包
在AppKernel中注册已安装的包
$bundles = array(
[...]
new TranslationEntityBundle(),
);
配置实体
- 创建实体(平台ORM)
- 您的实体必须实现EntityTranslatableInterface接口并使用EntityTranslatableTrait。
在函数getTranslatableClass()中返回将被翻译的类的名称
[...] /** * @ORM\Entity() * @ORM\Table(name="blog_items") */ class BlogItem implements EntityTranslatableInterface { use EntityTranslatableTrait; /** * @ORM\Column(type="integer") * @ORM\Id() * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\Column() */ protected $title; /** * @ORM\Column(type=text) */ protected $description; [...] public static function getTranslatableClass(){ return BlogItemTrans::class; } [...]
- 为实体创建翻译类
- 翻译类必须继承AbstractEntityTranslation
定义您想翻译的属性(属性必须在主实体类中存在)
[...] /** * @ORM\Entity() * @ORM\Table(name="blog_items_trans") */ class BlogItemsTrans extends AbstractEntityTranslation { protected $title; protected $description; }
更新doctrine模式
php bin/console doctrine:schema:update --dump-sql --force
配置区域设置
/** @var TranslatableSubscriber $ts */
$ts = $container->get('entity_translation_subscriber');
$ts->setDefaultLocale('en_US');
$ts->setCurrentocale('pl_PL');
查询
实体仓库函数
/** @var QueryBuilder $qb */
$qb = $this->createQueryBuilder('b')
->where('b.slug = :slug')
->setParameter('slug', 'new-post')
;
/** @var Query $query */
$query = $qb->getQuery();
$query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, TranslationWalker::class);
$query->setHint(TranslatableSubscriber::HINT_FALLBACK, true); // optional
$query->setHint(TranslatableSubscriber::HINT_LOCALE, 'pl_PL');// optional
$results = $query->getResult();
return $results;
插入 & 更新
插入和更新会自动执行。