2017 © Pedro PelĆ”ez
 

symfony-bundle enum-bundle

Bundle Enumeration

image

zuni/enum-bundle

Bundle Enumeration

  • Thursday, January 23, 2014
  • by zunitec
  • Repository
  • 4 Watchers
  • 0 Stars
  • 98 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

EnumBundle

InstalaĆ§Ć£o

Adicione o EnumBundle em seu composer.json:, (*1)

{
    "require": {
        "zuni/enum-bundle": "1.0.*@dev"
    }
}

Registre o bundle no AppKernel:, (*2)

``` php new Zuni\EnumBundle\ZuniEnumBundle(),, (*3)


Para configurar adicione um type no doctrine. VĆ” em config (Arquivos importantes): ``` yaml doctrine: dbal: ... types: enum: Zuni\EnumBundle\DBAL\Types\EnumType

Criar a classe da enum:, (*4)

``` php namespace Zuni\PessoaBundle\Enum;, (*5)

use Zuni\EnumBundle\Model\AbstractEnumList; use Zuni\EnumBundle\Model\AbstractEnumObject;, (*6)

class TipoEnderecoEnum extends AbstractEnumList {, (*7)

private static $instance;

/**
 *
 * @var TipoEndereco 
 */
public $PRINCIPAL;

/**
 *
 * @var TipoEndereco 
 */
public $ENTREGA;

/**
 *
 * @var TipoEndereco 
 */
public $COBRANCA;

function __construct()
{
    $this->PRINCIPAL = new TipoEndereco("P", "tipoenderecoenum.principal");
    $this->ENTREGA = new TipoEndereco("E", "tipoenderecoenum.entrega");
    $this->COBRANCA = new TipoEndereco("C", "tipoenderecoenum.cobraca");
}

/**
 * 
 * @return TipoEnderecoEnum
 */
public static function getInstance()
{
    if (!self::$instance) {
        self::$instance = new TipoEnderecoEnum();
    }
    return self::$instance;
}

}, (*8)

class TipoEndereco extends AbstractEnumObject{}, (*9)


**Nota:** > Os itens da TipoEnderecoEnum, estĆ£o com a descriĆ§Ć£o nesse formato (Ex: tipoenderecoenum.principal), > para serem traduzidas. > Caso nĆ£o seja necessĆ”rio, coloque a descriĆ§Ć£o que deseja para o form. No form type, passar a enumList no options. Ele vai mostrar a listagem padrĆ£o: ``` php $builder ->add('tipoEndereco', 'enum', array( "label" => 'endereco.tipoEndereco', "enumList" => TipoEnderecoEnum::getInstance() ));

Caso queria passar uma listagem diferente, use o choices:, (*10)

``` php $builder ->add('tipoEndereco', 'enum', array( "label" => 'endereco.tipoEndereco', "enumList" => TipoEnderecoEnum::getInstance(), "choices" => \Zuni\PessoaBundle\Enum\RegimeTributarioEnum::getInstance()->getLista(), ));, (*11)


Ao declarar a classe, use as anotaƧƵes da enum, faƧa da seguinte forma: ``` php use Zuni\EnumBundle\Annotation; /** * Endereco * * @Annotation\HasEnum */ class Endereco{}

Ao declarar o atributo da enum na classe, faƧa da seguinte forma:, (*12)

``` php /** * @var \Zuni\PessoaBundle\Enum\TipoEndereco * * @Annotation\Enum(enumList="\Zuni\PessoaBundle\Enum\TipoEnderecoEnum") * @ORM\Column(name="tipo_endereco", type="enum", length=1, nullable=true) */ private $tipoEndereco;, (*13)


Acrescentar no form_widget. Ele jĆ” estĆ” preparado para a traduĆ§Ć£o: ``` twig {% block enum_widget %} {% spaceless %} {% if expanded %} {{ block('choice_widget_expanded') }} {% else %} {{ block('enum_widget_collapsed') }} {% endif %} {% endspaceless %} {% endblock enum_widget %} {% block enum_widget_collapsed %} {% spaceless %} <select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}> {% if empty_value is not none %} <option value=""{% if required and value is empty %} selected="selected"{% endif %}>{{ empty_value|trans({}, translation_domain) }}</option> {% endif %} {% if preferred_choices|length > 0 %} {% set options = preferred_choices %} {{ block('choice_widget_options') }} {% if choices|length > 0 and separator is not none %} <option disabled="disabled">{{ separator }}</option> {% endif %} {% endif %} {% if choices %} {% set options = choices %} {{ block('choice_widget_options') }} {% else %} {% set options = enumList.getLista() %} {{ block('enum_widget_options') }} {% endif %} </select> {% endspaceless %} {% endblock enum_widget_collapsed %} {% block enum_widget_options %} {% spaceless %} {% for group_label, choice in options %} {% if choice is iterable %} <optgroup label="{{ group_label|trans({}, translation_domain) }}"> {% set options = choice %} {{ block('enum_widget_options') }} </optgroup> {% else %} <option value="{{ choice.id }}" {% if value %}{% if choice.id == value %} selected="selected"{% endif %}{% endif %}>{{ choice|trans({}, translation_domain) }}</option> {% endif %} {% endfor %} {% endspaceless %} {% endblock enum_widget_options %}

ApĆ³s isso tudo, deverĆ” funcionar., (*14)

The Versions