dev-master
9999999-dev https://github.com/zunitec/EnumBundle.gitBundle Enumeration
MIT
The Requires
The Development Requires
enum enumeration
Bundle Enumeration
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)
Bundle Enumeration
MIT
enum enumeration