2017 © Pedro Peláez
 

symfony-bundle helpers-bundle

Helpers bundle, Fer style

image

farconada/helpers-bundle

Helpers bundle, Fer style

  • Tuesday, October 13, 2015
  • by farconada
  • Repository
  • 1 Watchers
  • 0 Stars
  • 24 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 10 Versions
  • 0 % Grown

The README.md

HelpersBundle

Librería con clases y elementos que reutilizo habitualmente, (*1)

Funcionalidades

BodyListener, convierte request JSON

Si se envía una Request JSON convierte el body de esa Request en parámetros de Symfony., (*2)

ParamConverter, crea Commands desde parámetros

Desde una Request con parámetros construye un objeto de tipo Command., (*3)

El converter se llama "array2command_converter". Opciones:, (*4)

  • "param": nombre de un parameto dentro del JSON o "_root" si tiene en cuenta todo el objeto JSON desde la raiz.
  • "include_route_params" [true|false], si es true hace un array_merge() entre los parámetros de la request y los parámetros de la ruta.

El converter también ejecuta el validador sobre el objeto de tipo comando y lanza una excepción de tipo ValidationException si tiene errores., (*5)

/**
 * @Route(path="/test/{id}")
 * @ParamConverter("productCommand", class="AppBundle\Command\Message\NewProduct", options={"param": "_root", "include_route_params": true}, converter="array2command_converter")
 */
public function testAction($productCommand)
{
    dump($productCommand);
}

Constraint Validator: ChoiceFromConfig

Es prácticamente igual al validator Choice de Symfony pero saca las posibles opciones de la config de parameters.yml, (*6)

use Fer\HelpersBundle\Validator\Constraints as CustomAssert;

/**
 * @Assert\NotBlank()
 * @CustomAssert\ChoiceFromConfig(configEntry="project.authors")
 */
public $person;

Son las mismas opciones del Choice de Symfony pero en vez de "choices" tiene un "configEntry" que debe apuntar a un array en los parámetros., (*7)

project.authors:
      - fernando
      - fran

TbbcRestUtil ValidationErrorFactory

Si el bundle TbbcRestUtil está configurado se puede utilizar la clase ValidationErrorFactory que crea una Error Response legible para mostrar en JSON a partir de una excepción de tipo ValidationException., (*8)

tbbc_rest_util:
    error:
        use_bundled_factories: true
        exception_mapping:
            Array2CommandConverterException:
                class: "Fer\\HelpersBundle\\Exception\\Array2CommandConverterException"
                factory: validation_errors
                http_status_code: 400
                error_code: 400101
                error_message: "Invalid input"
                error_more_info_url: ""

Traits

ClassToArrayTrait

Define un método protected classToArray() que devuelve un array asociativo con las properties de la clase y sus valores., (*9)

ArrayToPropertiesTrait

Define un método protected arrayToProperties($dataArray) que coge un array asociativo y le asigna los valores a las properties de la clase., (*10)

Controller

CsrfController

Sirve para publicar una URL en la que se genera un token CSRF /csrf/{intention} La Response es json con el valor y el intent, (*11)

Csrf Annotation

Comprueba el token CSRF de un action, (*12)

        /**
         * @Csrf(intention="form")
         * @Route(path="/test/{id}")
         * @ParamConverter("productCommand", class="AppBundle\Command\Message\NewProduct", options={"param": "_root", "include_route_params": true}, converter="array2command_converter")
         */
        public function testAction($productCommand)
        {
            return new Response("It works");
        }

CQRS

UuidGenerator

Clase UuidGenerator que define un método estático generate() que devuelve un string tipo Uuid4, (*13)

RepositoryInterface

Interface que define los métodos básico que debe implementar un Repository:, (*14)

  • nextIdentity() devuelve un objeto tipo ID nuevo
  • getOfIdentity(AggregateIdInterface $id)) Devuelve un objeto que corresponde con el ID pasado
  • save(AggregateRootInterface $entity) persiste un Entity
  • remove(AggregateRootInterface $entity) Borra una entidad
  • findAll() Devuelve toda la colección de una entidad

DefaultDomainEvent

Es una clase abstracta que deberían implementar todos los eventos de dominio. En el constructor se le puede pasar un array asociativo para inicializar las properties del evento., (*15)

Los eventos de dominio deben definir una constante EVENT_NAME con el nombre del evento que será el que se asocie con su listener correspondiente., (*16)

DefaultCommand

Es una clase abstracta que deben implementar todos los comandos. En el constructor se le puede pasar un array asociativo para inicializar las properties del comando., (*17)

Los comandos deben definir una constante COMMAND_NAME con el nombre del comando que será el que se asocie con su handler correspondiente., (*18)

Define una función estática mapProperties($command, $entity) que inicializa un comando a partir de una entidad., (*19)

The Versions

13/10 2015

dev-master

9999999-dev

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

13/10 2015

1.0.8

1.0.8.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

08/10 2015

1.0.7

1.0.7.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

02/10 2015

1.0.6

1.0.6.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

26/07 2015

1.0.5

1.0.5.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

22/07 2015

1.0.4

1.0.4.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

18/07 2015

1.0.3

1.0.3.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

16/07 2015

1.0.2

1.0.2.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

06/07 2015

1.0.1

1.0.1.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada

06/07 2015

1.0.0

1.0.0.0

Helpers bundle, Fer style

  Sources   Download

GPLv2

The Requires

 

by Fernando Arconada