adrenalinkin/enum-property-bundle

提供与Symfony集成的EnumMapper组件

v2.0.1 2018-03-20 09:48 UTC

This package is auto-updated.

Last update: 2024-09-09 02:09:09 UTC


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]

许可证

license