liip/formtranslationchoice-bundle

此包已被弃用且不再维护。未建议替代包。

一个为翻译域工作的表单选择和验证约束的Symfony2包。

1.0.0 2013-09-30 15:15 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:22:07 UTC


README

未维护

此包不再维护。如有需要,请随意分叉。

此Symfony2包提供了一个表单选择字段类型和一个验证约束,这些类型与翻译域一起工作。您可以将翻译域中的所有字符串用作实体字段的值。表单将翻译键存储在字段中。

例如,我们与实体 Person 一起使用它,该实体有一个字段 title。我们使用翻译域 person_title 并在翻译文件中维护所有人可能拥有的所有可能的标题(先生,女士,教授,博士等)。实体存储翻译键,因此可以根据需要翻译标题。我们甚至可以将先生改为Mister,而无需更改数据库。

这不会替代链接到另一个实体的选择字段。但对于上述示例之类的简单情况,您可能不需要构建管理界面并将此类选项存储在数据库中。

安装

php composer.phar require liip/formtranslationchoice-bundle --no-update
php composer.phar update liip/formtranslationchoice-bundle

Composer 将询问您要安装的包版本。除非您想要锁定更具体的版本,否则请选择 1.0.*

启用包

在您的内核中加载包

// app/AppKernel.php
public function registerBundles()
{
  return array(
      // ...
      new Liip\FormTranslationChoiceBundle\LiipFormTranslationChoiceBundle(),
      // ...
  );
}

由于Symfony2翻译器没有公开翻译域,您需要使用此包提供的扩展翻译器。将以下内容添加到您的项目配置文件中

# app/config/config.yml
parameters:
    #...
    translator.class:      Liip\FormTranslationChoiceBundle\Translation\Translator

使用

此包提供了一个表单小部件 translation_choice 和一个验证约束 TranslationDomainKey,它们在整个翻译域上操作。

警告:在使用此功能时,请确保您有使用域的完整翻译,或者根本不使用。此包不合并不同的语言,如果请求的语言不存在,则回退到默认语言。

translation_choice 表单字段类型

translation_choice 字段类型基于核心 choice 并提供指定域的所有翻译作为选项。您可以使用标准的 Symfony2 choice 字段类型 的选项。但是,由于它们来自翻译域,因此指定选择或选择列表参数是没有意义的。

要选择要使用的翻译域,需要指定 translation_domain 选项。

/** @var $builder FormBuilderInterface */
$builder
    ->add('title', 'translation_choice', array(
        'translation_domain' => 'person_title',
    ))

默认情况下,使用请求区域设置,但您可以设置 locale 选项以覆盖此设置。

默认情况下,值按字母顺序排序。如果您不希望它们排序,请将 `sorted` 选项设置为 false。

验证约束

本包提供了一个验证约束,确保字段有一个值是指定翻译域中的键。与所有验证器一样,此验证器也接受null和空字符串,因此如果您不希望允许空值,您还需要一个NotBlank验证。

use Liip\FormTranslationChoiceBundle\Validator\Constraints as TranslationAssert;

// ...

/**
 * @TranslationAssert\TranslationDomainKey(translation_domain = "phone_type")
 */
private $type;

许可证

本包采用MIT许可证。请参阅文件LICENSE获取更多信息。