PHPackages                             farconada/helpers-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. farconada/helpers-bundle

ActiveSymfony-bundle

farconada/helpers-bundle
========================

Helpers bundle, Fer style

1.0.8(10y ago)0421GPLv2PHP

Since Jul 6Pushed 10y ago1 watchersCompare

[ Source](https://github.com/farconada/HelpersBundle)[ Packagist](https://packagist.org/packages/farconada/helpers-bundle)[ RSS](/packages/farconada-helpers-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (10)Used By (1)

HelpersBundle
=============

[](#helpersbundle)

Librería con clases y elementos que reutilizo habitualmente

Funcionalidades
---------------

[](#funcionalidades)

### BodyListener, convierte request JSON

[](#bodylistener-convierte-request-json)

Si se envía una Request JSON convierte el body de esa Request en parámetros de Symfony.

### ParamConverter, crea Commands desde parámetros

[](#paramconverter-crea-commands-desde-parámetros)

Desde una Request con parámetros construye un objeto de tipo Command.

El converter se llama "array2command\_converter". Opciones:

- "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.

```
/**
 * @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

[](#constraint-validator-choicefromconfig)

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

```
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.

```
project.authors:
      - fernando
      - fran

```

### TbbcRestUtil ValidationErrorFactory

[](#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*.

```
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

[](#traits)

#### ClassToArrayTrait

[](#classtoarraytrait)

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

#### ArrayToPropertiesTrait

[](#arraytopropertiestrait)

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

### Controller

[](#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

#### Csrf Annotation

[](#csrf-annotation)

Comprueba el token CSRF de un action

```
        /**
         * @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

[](#cqrs)

#### UuidGenerator

[](#uuidgenerator)

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

#### RepositoryInterface

[](#repositoryinterface)

Interface que define los métodos básico que debe implementar un Repository:

- 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

[](#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.

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.

#### DefaultCommand

[](#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.

Los comandos deben definir una constante COMMAND\_NAME con el nombre del comando que será el que se asocie con su handler correspondiente.

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

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~12 days

Recently: every ~20 days

Total

9

Last Release

3871d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b708ca5a8ea5920696d2bb4b471287dc4921dc4d16c42446d95b303db2bf9f06?d=identicon)[farconada](/maintainers/farconada)

---

Top Contributors

[![farconada](https://avatars.githubusercontent.com/u/469221?v=4)](https://github.com/farconada "farconada (39 commits)")

### Embed Badge

![Health badge](/badges/farconada-helpers-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/farconada-helpers-bundle/health.svg)](https://phpackages.com/packages/farconada-helpers-bundle)
```

###  Alternatives

[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[getdkan/dkan

DKAN Open Data Catalog

385135.4k2](/packages/getdkan-dkan)[forkcms/forkcms

Fork is an open source CMS that will rock your world.

1.2k44.5k](/packages/forkcms-forkcms)[temporal/sdk

Temporal SDK

4002.2M18](/packages/temporal-sdk)[sassnowski/venture

A package to manage complex workflows built on top of Laravel's queue.

825254.5k1](/packages/sassnowski-venture)[genealabs/laravel-governor

Managing policy and control in Laravel.

201262.8k](/packages/genealabs-laravel-governor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
