(16) 981791110 contato@policast.studio

O que é o StofDoctrineExtensionsBundle?

O StofDoctrineExtensionsBundle é um pacote para o framework Symfony desenvolvido pela empresa stof. Ele fornece uma coleção de extensões que adicionam funcionalidades úteis ao Doctrine, biblioteca de mapeamento objeto-relacional (ORM) utilizada no Symfony para a manipulação de dados do banco de dados. As extensões permitem desde o uso de novos tipos de dados até a automatização de tarefas comuns, como timestamps e sluggable.

Quais são as extensões disponíveis no pacote?

O pacote fornece uma coleção de extensões que cobrem diversas áreas, tais como: Sluggable, Tree, Loggable, SoftDelete, Sortable, Translatable, Timestampable, Blameable, IpTraceable, e muitas outras.

Cada uma das extensões adiciona um comportamento específico para as entidades do Doctrine e uma série de campos e métodos que facilitam seu uso, como por exemplo, o método “setSlug()”, gerado pela extensão Sluggable.

Como instalar o pacote?

O pacote pode ser instalado pelo Composer, gerenciador de pacotes do PHP. Para isso, adicione a seguinte linha no arquivo composer.json do seu projeto:

"require": { "stof/doctrine-extensions-bundle": "1.3.*" }

E em seguida execute o comando “composer update” na linha de comando para instalar o pacote. Por fim, adicione a seguinte linha ao seu arquivo config.yml:

StofDoctrineExtensionsBundleDoctrineExtensions: ~

Como usar as extensões nas minhas entidades?

Para utilizar as extensões em suas entidades, você precisa adicionar a anotação correspondente no registro da classe da entidade.Por exemplo, para utilizar a extensão Sluggable em uma entidade chamada “Produto”, você precisa adicionar a seguinte anotação acima da declaração da classe:

@GedmoMappingAnnotationSlug(fields={"nome"}, updatable=false)

Como usar a extensão Timestampable?

A extensão Timestampable adiciona os campos “createdAt” e “updatedAt” automaticamente nas entidades. Basta adicionar a anotação com o nome “Timestampable” na entidade desejada:

@GedmoMappingAnnotationTimestampable(on="create")

Como usar a extensão Loggable?

A extensão Loggable registra os valores antigos e novos de uma entidade sempre que ela é atualizada. Para isso, é necessário adicionar algumas anotações no topo da entidade, além de uma tabela para registrar os logs. Por exemplo, para registrar os logs da entidade “Produto”, faça o seguinte:

@GedmoMappingAnnotationLoggable

E depois, defina uma tabela para os logs no arquivo schema.yml:

ProdutoLog:
type: entity
gedmo:
loggable: true

Como usar a extensão Translatable?

A extensão Translatable permite a tradução dos campos de uma entidade para diversos idiomas. Para isso, é necessário adicionar a anotação “Translatable” à entidade:

@GedmoMappingAnnotationTranslatable

Com a anotação feita, adicione a seguinte configuração no arquivo config.yml:

stof_doctrine_extensions:
default_locale: en_us
translation_fallback: false

E depois execute o comando abaixo para criar as tabelas de tradução:

php bin/console doctrine:schema:update --force --em=default --dump-sql

Como usar a extensão Blameable?

A extensão Blameable adiciona campos para registrar o criador e o modificador das entidades. Para utilizar a extensão, basta adicionar a anotação “Blameable” na entidade:

@GedmoMappingAnnotationBlameable

A extensão a utiliza a autenticação do seu sistema. É necessário passar o usuário logado na hora de inserir ou modificar os registros.

Como usar a extensão SoftDelete?

A extensão SoftDelete adiciona o campo “deletedAt” na entidade, para remover registros de forma lógica. Para utilizar a extensão basta adicionar a anotação “SoftDeleteable” na entidade:

@GedmoMappingAnnotationSoftDeleteable(fieldName="deletedAt", timeAware=false)

E adicionar a seguinte configuração no arquivo config.yml:

stof_doctrine_extensions:
orm:
softdeleteable:
deletedAtFieldName: deletedAt
timeAware: false

Como usar a extensão Tree?

A extensão Tree adiciona suporte para hierarquias em árvore (ou seja, estruturas de dados em que cada elemento pode ter vários elementos filhos). Para utilizar a extensão basta adicionar a anotação “Tree” na entidade:

@GedmoMappingAnnotationTree(type="nested")

E adicionar a seguinte configuração no arquivo config.yml:

stof_doctrine_extensions:
orm:
default:
tree:
type: nested
strategy: nested

Como usar a extensão Sortable?

A extensão Sortable permite ordenar as entidades de acordo com um campo específico. Para utilizá-la, basta adicionar a seguinte anotação acima da declaração da classe:

@GedmoMappingAnnotationSortable

E dentro da classe, adicionar a seguinte anotação ao campo que será usado para ordenar:

@GedmoMappingAnnotationSortablePosition

Além disso, é preciso adicionar a seguinte configuração ao arquivo config.yml:

stof_doctrine_extensions:
orm:
default:
sortable: true