liip / formtranslationchoice-bundle
一个为翻译域工作的表单选择和验证约束的Symfony2包。
Requires
- php: >=5.3.3
- symfony/framework-bundle: ~2.1
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获取更多信息。