PHPackages                             nuxia/nuxia-plugin - 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. nuxia/nuxia-plugin

ActiveLibrary

nuxia/nuxia-plugin
==================

Nuxia plugin

3.0.x-dev(9y ago)01.5kMITPHPPHP &gt;=5.4

Since Dec 8Pushed 9y ago4 watchersCompare

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

READMEChangelogDependencies (22)Versions (5)Used By (0)

Plugin Nuxia Symfony2
=====================

[](#plugin-nuxia-symfony2)

Sommaire
--------

[](#sommaire)

- Mise en place du `pager` de `KnpLabs`: `/doc/knp_paginator.md`
- Mise en place des `valuelist` et utilisation du `Parser` : `/doc/value_list_and_utilities.md`
- Utiliser un objet dans une route : `/doc/router.md`
- Manipulation des champs `jsons` : `/doc/json_form_and_object.md`
- Manipulation des médias: `/doc/media.md`
- Contraintes de validations personnalisées : `/doc/validation_constraints.md`
- Gestion de la securité à l'aide d'un manager : `/doc/security.md`
- Utilisation de type personnalisé : `/doc/form_type.md`
- Customizer le rendu des formulaires : `/doc/form_layout.md`

Généralités Symfony2
--------------------

[](#généralités-symfony2)

### Traduction d'un formulaire

[](#traduction-dun-formulaire)

La traduction des `labels`, `help`, `empty_value`, `choices` etc.. se fait à l'aide de l'option `translation_domain` qui est disponible pour chaque champ du formulaire. Pour utiliser le même domaine pour tout le formulaire on pourra ajouter la ligne suivante dans la méthode `setDefaultsOptions` du formulaire. Tout en sachant, qu'on pourra toujours personnaliser le domaine pour un champ précis.

```
$resolver->setDefaults(array('translation_domain' => 'form', /*autres options*/));

```

Par convention, on utilise `form `comme domaine

### Notes pour les formulaires possédant un champ d'upload

[](#notes-pour-les-formulaires-possédant-un-champ-dupload)

Souvent pour traiter un formulaire depuis le contrôleur, on vérifiera que la requête possède le paramètre correspondant au nom du formulaire pour ne pas faire de `bind` inutile. Dans le cas d'un formulaire possédant un champ d'upload il faut omettre cette instruction car la taille du fichier peut dépasser la taille autorisée par php (paramètre `post_max_size` du fichier `php.ini`) et cela crée des bugs.

### Injecter un paramètre/service dans tous les templates twig

[](#injecter-un-paramètreservice-dans-tous-les-templates-twig)

Il faut ajouter les lignes suivantes dans le fichier `app/config.yml` :

```
twig:
	globals:
    	parametre: "%parametre%"
      	service: "@monservice"

```

NuxiaBundle
-----------

[](#nuxiabundle)

### Général

[](#général)

### Créer un manager d'entité personnalisé

[](#créer-un-manager-dentité-personnalisé)

Les managers d'entité sont très utiles pour centraliser l'exécution Notre bundle fournit une classe abstraite (`Nuxia\Component\Doctrine\Manager\AbstractEntityManager`) et une interface (`Nuxia\Component\Doctrine\Manager\EntityManagerInterface`)

### Installation

[](#installation)

Pour ajouter le bundle Nuxia à un projet, il faut modifier deux fichiers:

- Ajouter le bundle dans la méthode registerBundles du fichier AppKenrel.php.

```
public function registerBundles()
{
    ...
    // Nuxia vendors
    new Nuxia\Bundle\NuxiaBundle\NuxiaBundle(),
    ...

```

- Modifier le bloc autoload du fichier composer.json

```
"autoload": {
    "psr-0": {
        "Nuxia": "vendor/nuxia/src/",
        "": "src/"
    }
},

```

### Configuration

[](#configuration)

Certaines options sont configurables depuis le fichier `app/config.yml` de l'application dans lequel le bundle Nuxia est chargé. Voici le squelette de configuration avec les valeurs par défaut :

```
nuxia:
	disable_password: false
	mailer:
		from:
			email: "noreply@nuxia.fr"
			name: "Nuxia"
	validator:
		reserved_words: "[]"

```

Nous verrons en détails chaque ligne du fichier configuration dans la fonctionnalité qui l'utilise.

### Fonctionnalités

[](#fonctionnalités)

#### Login sans saisir le mot de passe

[](#login-sans-saisir-le-mot-de-passe)

Cette fonctionnalité permet à l'utilisateur de se connecter sans taper le mot de passe lorsque `disable-password` est à `true` (Voir configuration) . Pour se faire, on a surchargé le service `security.authentication.provider.dao`avec notre classe `Nuxia\Bundle\NuxiaBundle\Security\AuthenticationProvider`.

#### Controlleur

[](#controlleur)

\*todo : Ceci est une ébauche qui est à revoir pour utiliser les bonnes pratiques (utiliser les contrôleurs comme des services et n'injectant que les dépendances utiles).

La classe `Nuxia\Bundle\NuxiaBundle\AbstractController` est la classe de base pour tout les contrôleurs définies en temps que service. Cette classe n'hérite donc pas de `ContainerAware`.

```
parameters:
    #nuxia.controller.class: Nuxia\Controller\AbstractController

services:
	nuxia.controller:
    	class: "%nuxia.controller.class%"
    	scope: "request"
        abstract: true
        public: false
        calls:
            - [ "setRouter", [ "@router" ] ]
            - [ "setTempmlating", [ "@templating" ] ]
            - [ "setRequest", [ "@request" ] ]

```

On note qu'il n'y a pas de constructeur dans cette classe il faut donc le définir dans la classe fille et que la classe est changeable via le paramètre `%nuxia.controller.class%`.

Pour définir un contrôleur comme service il suffira d'écrire l'instruction suivante :

```
services:
	example:controller:
		class: Nuxia/ExampleBundle/ExampleController
		parent: "nuxia.controller"
		arguments:
			#arguments du constructeur

```

En plus d'injecter les services "indispensables" à un contrôleur cette classe fournit un ensemble de méthode dite raccourci :

- `getReferer($default)` permet de générer l'url de la page précédente. Si l'url de la page précédente est égale à celle de la page courante on redirige vers le `$default` pour éviter une boucle infinie. ( Ce système de referer va être revu on va stocker les x dernières url utiliser l'url d'avant plutôt qu'un défaut).

#### Mailer

[](#mailer)

Dans un projet Symfony on a souvent besoin de customizer le rendu des mails avec des templates `Twig`. Le service `nuxia.mailer` permet de réaliser cela :

```
nuxia.mailer:
  class: "%nuxia.mailer.class%"
    arguments:
      - "@mailer"
      - "@templating.engine.twig"
      - {}
      - { language: "fr", template: "NuxiaBundle:Mailer:default"}

```

On constate que le constructeur prend deux tableaux en paramètres (arguments 3 et 4 du constructeur).

##### Le tableau addresses

[](#le-tableau-addresses)

Le premier tableau (3ème argument du constructeur) permet de gérer les différents destinataires et expéditeurs de l'email. Pour chaque élément de ce tableau, on peut définir un email ou un tableau ayant pour clé l'email et valeur le nom a affiché. On peut également définir un tableau d'émail ou de tableaux s'il y a plusieurs destinataires ou expéditeurs.

L'expéditeur par défaut (`from`) est personnalisable via le fichier de configuration (Voir configuration). On peut également écraser la clé `from` du tableau. Les destinataires `to`, `cc` et `cci` sont définis respectivement avec les clés `to`, `cc` et `bcc`. La clé `to` doit obligatoirement être renseigner avant l'envoi de l'email.

Ce tableau est modifiable uniquement dans le constructeur et dans la méthode `sendMessage` que nous expliquerons ci-dessous.

##### Le tableau template\_parameters

[](#le-tableau-template_parameters)

Le deuxième (4ème argument du constructeur) permet de personnaliser le rendu de l'email.

La clé `language` permet de spécifier le template a utilisé pour le rendu du mail. On la couple avec la clé `language` afin de traduire directement les emails dans les templates (pour ne pas surcharger les fichiers yml). Avec `NuxiaBundle:Mailer:default` comme template et `fr` comme langage notre template aura le chemin suivante : `NuxiaBundle/Resources/Mailer/fr/default.html.twig`.

La clé `parameters` permet d'ajouter des variables au template. On peut ajouter des simples variable avec la méthode `addTemplate parameters` ou des liens avec la méthodes `addLink`.

##### Objet et l'envoi de l'email

[](#objet-et-lenvoi-de-lemail)

Il me manque plus qu 'un objet à notre email. Il y a deux façons de le spécifier :

- On peut utiliser la méthode `setSubject` template.
- On peut définir un block `subject` dans le template.

```
{% block subject %}
    {%- autoescape false -%}
        {{ 'restitution.mail_subject.validated.found'|trans({}, 'messages', language) }}
    {%- endautoescape -%}
{% endblock %}

```

Une fois le mailer correctement configuré, l'envoi de l'email se fait grâce à la méthode `sendMessage($addresses, $template)` dans laquelle on peut surcharger les paramètres du mailer. La variable addresses peut-être un tableau avec les clés vu ci-dessus (Voir le tableau addresses) ou juste un email qui servira de `to`.

##### Envoyer tous les emails à une seule adresse

[](#envoyer-tous-les-emails-à-une-seule-adresse)

Sur les versions de test et de développement on utilise le paramètre `delivery_address` afin d'envoyer tous les emails à une seul adresse. Ce paramètre est défini dans le fichier `parameters.yml`.

```
parameters:
	delevery_addresse: "example@nuxia.fr"

```

\*todo : Il faut trouver un système astucieux pour pouvoir envoyer plusieurs messages le mailer n'est pour le moment pas adapter à cette utilisation.

#### Méthodes supplémentaires dans les templates Twig

[](#méthodes-supplémentaires-dans-les-templates-twig)

Le bundle permet de charger des extensions pour `Twig` qui donne accès à des méthodes ou des filtres supplémentaires. Les extensions `Text` et `Intl` qui sont natives à `Twig` (voir ).

Notre extension `Nuxia\Bundle\NuxiaBundle\Twig\NuxiaTwigExtension` ajoute les méthodes et les filtres suivants :

- Le filtre camelize qui permet transformer une chaîne en `CamelCase` ('ordered\_list'|camelize -&gt; 'OrderedList').
- Le filtre underscore qui permet transformer une chaîne en `underscore_case` ('OrderedList'|camelize -&gt; 'ordered\_List').

Le chargement d'une extension `Twig` s'effectue dans le fichier `services.yml` avec le tag `twig.extension` :

```
services:
	nuxia.twig.extension:
		class: Nuxia\Bundle\NuxiaBundle\Twig\NuxiaTwigExtension
    	public: false
    	tags:
    		-  { name: "twig.extension" }

```

#### AbstractEntityManager.php

[](#abstractentitymanagerphp)

Permet d'ajouter des propriétés et des méthodes globales pour les managers d'entity `Doctrine`.

#### LogListener.php

[](#loglistenerphp)

Permet d'ajouter des propriétés et des méthodes globales pour les listeners des entités Doctrine `loggable`. Par exemple `getDefaultUser` pour les objets que l'on veut logger.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 86.4% 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 ~158 days

Total

3

Last Release

3497d ago

Major Versions

2.8.x-dev → 3.0.x-dev2016-10-20

### Community

Maintainers

![](https://www.gravatar.com/avatar/008dc968ac3d1851c0b0ec4c89893773e42ecb49817fc5c1cb3cbe4d06800b46?d=identicon)[nuxia](/maintainers/nuxia)

---

Top Contributors

[![snoob](https://avatars.githubusercontent.com/u/1806237?v=4)](https://github.com/snoob "snoob (38 commits)")[![AlexDpy](https://avatars.githubusercontent.com/u/7074618?v=4)](https://github.com/AlexDpy "AlexDpy (4 commits)")[![scalp](https://avatars.githubusercontent.com/u/1469157?v=4)](https://github.com/scalp "scalp (2 commits)")

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/nuxia-nuxia-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/nuxia-nuxia-plugin/health.svg)](https://phpackages.com/packages/nuxia-nuxia-plugin)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)

PHPackages © 2026

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