adrenalinkin / enum-property-bundle
提供与Symfony集成的EnumMapper组件
v2.0.1
2018-03-20 09:48 UTC
Requires
- php: ~5.6||~7.0
- adrenalinkin/enum-mapper: ~1.0
- symfony/framework-bundle: ~2.8||~3.0
- symfony/validator: ~2.8||~3.0
- twig/twig: ^1.35||^2.0
Suggests
- symfony/symfony: Allows more advanced functionality with full Symfony package
README
简介
Bundle将EnumMapper组件与Symfony
生态系统集成。提供Twig
和验证器使用的过滤器和方法。
安装
步骤1:下载Bundle
打开命令行,进入您的项目目录,并执行以下命令以下载此Bundle的最新稳定版本
composer require adrenalinkin/enum-property-bundle
此命令需要您全局安装Composer。
步骤2:启用Bundle
通过将Bundle添加到项目中app/AppKernel.php
中注册的Bundle列表中来启用Bundle
<?php // app/AppKernel.php class AppKernel extends Kernel { // ... public function registerBundles() { $bundles = [ // ... new Linkin\Bundle\EnumPropertyBundle\LinkinEnumPropertyBundle(), ]; return $bundles; } // ... }
使用方法
EnumMapper组件的文档。例如,我们将使用此类
<?php use Linkin\Component\EnumMapper\Mapper\AbstractEnumMapper; class GenderMapper extends AbstractEnumMapper { const DB_UNDEFINED = 0; const DB_MALE = 10; const DB_FEMALE = 20; const HUMAN_UNDEFINED = 'Undefined'; const HUMAN_MALE = 'Male'; const HUMAN_FEMALE = 'Female'; }
Twig扩展
Twig
扩展允许从模板中使用EnumMapper
组件的功能。
enum_to_human
通过接收到的数据库值获取人类化值
{% set status = 20 %} {% set class = '\\Acme\\Bundle\\AcmeBundle\\Entity\\Mapper\\GenderMapper' %} {{ status|enum_to_human(class) }} {# Female #}
enum_to_db
通过接收到的人类化值获取数据库值
{% set status = 'Male' %} {% set class = '\\Acme\\Bundle\\AcmeBundle\\Entity\\Mapper\\GenderMapper' %} {{ status|enum_to_db(class) }} {# 10 #}
enum_map
获取数据库值和人类化值的所有可用配对列表
{% for key, value in enum_map('\\Acme\\Bundle\\AcmeBundle\\Entity\\Mapper\\GenderMapper') %} {{ key }}: {{ value|trans }} <br> {% endfor %} {# 0: Undefined 10: Male 20: Female #}
enum_allowed_db和enum_allowed_human
获取所有可用的数据库值或人类化值列表
{% set class = '\\Acme\\Bundle\\AcmeBundle\\Entity\\Mapper\\GenderMapper' %} {{ enum_allowed_db(class)|join(', ') }} {# 0, 10, 20 #} {{ enum_allowed_human(class)|join(', ') }} {# Undefined, Male, Female #} {# Exclude values from result #} {{ enum_allowed_db(class, [0])|join(', ') }} {# 10, 20 #} {{ enum_allowed_human(class, ['Undefined'])|join(', ') }} {# Male, Female #}
enum_random_db和enum_random_human
获取随机数据库或人类化值
{% set class = '\\Acme\\Bundle\\AcmeBundle\\Entity\\Mapper\\GenderMapper' %} {{ enum_random_db(class) }} {# 0 || 10 || 20 #} {{ enum_random_human(class) }} {# Undefined || Male || Female #} {# Exclude values from result #} {{ enum_random_db(class, [0]) }} {# 10 || 20 #} {{ enum_random_human(class, ['Undefined']) }} {# Male || Female #}
Enum验证器
为了验证使用EnumMapper
组件的实体字段,Bundle包含EnumValidator
。验证器扩展了标准Symfony
包中的ChoiceValidator
。更改了标准错误消息和choice
数组。数组choice
不能更改,并将包含接收到的类映射器的允许数据库值。还添加了几个其他选项。必需选项
mapperName
- 包含类映射器的全名。
可选变量
exclude
- 应从允许值中排除的数据库值列表。
验证器使用示例
Acme\Bundle\AcmeBundle\Entity\User: properties: gender: - Linkin\Bundle\EnumPropertyBundle\Validator\Constraints\Enum: mapperName: 'Acme\Bundle\AcmeBundle\Entity\Mapper\GenderMapper' exclude: [0]