Download the PHP package akyos/ux-forms without Composer
On this page you can find all versions of the php package akyos/ux-forms. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download akyos/ux-forms
More information about akyos/ux-forms
Files in akyos/ux-forms
Package ux-forms
Short Description Administrable contact forms and email templates for Symfony admin
License proprietary
Informations about the package ux-forms
Akyos UXForms
Bundle Symfony pour gérer des formulaires de contact administrables : création de champs en back-office, affichage public, envoi d'e-mails de notification, historique des soumissions.
Sommaire
- Prérequis
- Installation
- Configuration
- Routes
- Utilisation
- Architecture
- Personnalisation (override)
- Modèle de données
- Variables d'e-mail
- Traductions
- Tests & fixtures
Prérequis
| Dépendance | Rôle |
|---|---|
| PHP ≥ 8.4 | |
| Symfony 7 ou 8 | Framework |
| Doctrine ORM 3 | Entités & migrations |
| Symfony Mailer | Notifications |
symfony/ux-live-component |
Formulaires admin & public réactifs |
symfony/ux-twig-component |
Composants Twig (twig:Admin:ContactForm:…) |
akyos/ux-filters |
Filtres des listes admin |
akyos/ux-table |
Tableaux paginés admin |
Côté application hôte, les templates du bundle s'appuient aussi sur :
symfony/ux-toolkit(Button, Card, Tabs, Dialog, Badge, Breadcrumb, Sidebar…)symfony/ux-icons(twig:ux:icon)- Tailwind CSS (classes utilitaires dans les templates)
Installation
1. Composer
Depuis un dépôt path (monorepo) :
Depuis un dépôt Git : adapter l'URL selon votre forge.
2. Enregistrer le bundle
Le bundle enregistre automatiquement :
- le mapping Doctrine ORM (
Akyos\UXForms\Entity) - les migrations (
Akyos\UXForms\Migrations) - les traductions (
lib/ux-forms/translations) - le namespace Twig
@UXForms - les Twig Components
Akyos\UXForms\Twig\Components\ - le chemin Asset Mapper
ux-forms/→lib/ux-forms/assets
3. Configuration
Variables d'environnement typiques :
4. Mailer Symfony
Configurer un transport SMTP (ou autre) :
5. Routes
En monorepo, remplacer
vendor/akyos/ux-formsparlib/ux-forms.
6. Sécurité
Les contrôleurs admin utilisent ContactFormVoter (CONTACT_FORM_VIEW, EDIT, CREATE) et les rôles définis dans allowed_roles.
Exemple d'accès public au formulaire front :
Adapter selon votre modèle de rôles.
7. Sidebar admin (optionnel)
Inclure le fragment de navigation fourni :
8. Stimulus (éditeur de champs admin)
Le drag-and-drop de l'éditeur de champs nécessite le contrôleur field_sortable :
9. Migrations
Les migrations du bundle créent notamment :
contact_form,contact_form_field,contact_form_recipientemail_template,email_layoutcontact_form_submission
10. Données de démo (optionnel)
Configuration
| Clé | Défaut | Description |
|---|---|---|
admin_layout |
admin/layouts/layout.html.twig |
Layout Twig des pages admin du bundle. Exposé en global ux_forms_admin_layout. |
allowed_roles |
ROLE_ADMIN, ROLE_SUPER_ADMIN |
Rôles autorisés sur les écrans admin (via ContactFormVoter). |
sender_email |
noreply@localhost |
Expéditeur des e-mails de notification. |
sender_name |
SEFCA |
Nom affiché de l'expéditeur. |
public_base_url |
http://localhost |
URL publique pour les assets e-mail (logo). |
email_layout_template |
@UXForms/email/layout.html.twig |
Layout HTML des e-mails. |
email_notification_template |
@UXForms/email/contact_form_notification.html.twig |
Corps HTML de la notification. |
email_logo_directory |
public/ux-forms/email |
Répertoire d'upload du logo (admin). |
email_logo_uri_prefix |
/ux-forms/email |
Préfixe URI public du logo. |
Routes
Admin (préfixe /admin, noms admin_*)
| Nom | URL | Description |
|---|---|---|
admin_formulaires_index |
/admin/formulaires |
Liste des formulaires |
admin_formulaires_new |
/admin/formulaires/new |
Création |
admin_formulaires_edit |
/admin/formulaires/{id} |
Édition |
admin_formulaires_soumissions_index |
/admin/formulaires/soumissions |
Liste des soumissions |
admin_formulaires_soumissions_show |
/admin/formulaires/soumissions/{id} |
Détail d'une soumission |
admin_formulaires_modele_email |
/admin/formulaires/modele-email |
Modèle e-mail (logo, couleurs, pied de page) |
Front
| Nom | URL | Description |
|---|---|---|
contact_form_show |
/contact-form/{id} |
Page publique d'un formulaire |
Utilisation
Afficher un formulaire sur le front
Option A — route dédiée (déjà fournie) :
Option B — intégrer le LiveComponent dans n'importe quelle page :
Le composant gère validation, message de confirmation et soumission AJAX (LiveComponent).
Flux de soumission
L'utilisateur voit le message de confirmation même si l'e-mail échoue ; l'échec est visible dans l'admin (liste + détail des soumissions).
Architecture
Personnalisation (override)
1. Handler de soumission ⭐ (extension principale)
Interface :
Implémentation par défaut : persistance + envoi e-mail + statut.
Override complet — remplacer le service :
Override partiel — décorateur autour du service bundle :
Réutiliser la logique bundle sans l'interface :
2. Templates Twig
Namespace : @UXForms/…
Copier un template dans votre app et surcharger via la convention Symfony :
Ou redéclarer un chemin Twig prioritaire. Templates couramment surchargés :
| Template | Usage |
|---|---|
@UXForms/admin/contact_form/*.html.twig |
Pages admin formulaires |
@UXForms/admin/contact_form_submission/*.html.twig |
Soumissions |
@UXForms/components/Front/PublicForm.html.twig |
Rendu public |
@UXForms/email/layout.html.twig |
Layout e-mail |
@UXForms/email/contact_form_notification.html.twig |
Corps notification |
@UXForms/admin/_sidebar.html.twig |
Navigation admin |
Config des templates e-mail sans copier les fichiers :
3. Layout admin
Le layout doit définir les blocs utilisés par les pages bundle (title, admin_breadcrumb, content). Les templates bundle étendent la variable globale ux_forms_admin_layout :
4. Sécurité & rôles
Le voter ContactFormVoter accorde VIEW, EDIT, CREATE si l'utilisateur possède l'un de ces rôles.
Pour une logique plus fine, créer votre propre voter ou décorer le service existant (non prévu nativement — copier/étendre ContactFormVoter et remplacer le service).
5. Expéditeur & branding e-mail
Via config :
Le logo et les couleurs se paramètrent aussi dans l'admin (/admin/formulaires/modele-email).
6. Traductions
Domaines fournis (fichiers *.fr.yaml) :
| Domaine | Contenu |
|---|---|
contact_form |
Admin formulaires |
contact_form_submission |
Admin soumissions |
email_template |
Modèle e-mail admin |
public_contact_form |
Formulaire public |
validators |
Contraintes |
Surcharge dans translations/ de l'app :
7. Routes
Les fichiers config/routes.php et config/routes_public.php du bundle peuvent être copiés dans l'app pour changer les URLs ou les noms, ou importés tels quels avec prefix / name_prefix.
Exemple — préfixer l'admin différemment :
8. Services internes (override avancé)
| Service | Rôle | Override |
|---|---|---|
ContactFormSubmissionHandlerInterface |
Point d'entrée soumission | ✅ Recommandé |
ContactFormSubmissionService |
Persistance + mail + statut | Via handler custom ou alias DI |
ContactFormMailer |
Envoi notification HTML/text | Alias + classe custom |
ContactFormEmailVariableResolver |
Variables {{prenom}}, {{contenu}} |
Alias si logique custom |
EmailLogoStorage |
Upload logo e-mail | Paramètres config ou service custom |
Exemple — mailer custom :
9. Composants Twig / LiveComponents
Enregistrés sous le préfixe :
Pour surcharger un composant, créer une classe dans votre namespace avec le même nom n'est pas supporté directement ; préférer :
- surcharger le template
@UXForms/components/… - ou remplacer l'include dans vos propres pages admin
10. Ce qui n'est pas prévu pour override
| Élément | Alternative |
|---|---|
| Entités Doctrine | Ne pas modifier ; étendre via handler ou tables annexes |
| Migrations bundle | Ne pas éditer ; ajouter vos propres migrations |
Enum ContactFormFieldType |
Demander une évolution bundle ou champs custom via handler |
Modèle de données
| Entité | Description |
|---|---|
ContactForm |
Formulaire (libellé, actif, message confirmation, sujet/corps e-mail) |
ContactFormField |
Champ (type, libellé, position, layout ligne/colonne) |
ContactFormRecipient |
Destinataire notification |
EmailTemplate |
Modèle e-mail réutilisable (legacy / référentiel) |
EmailLayout |
Branding global (logo, couleur, pied de page) — singleton |
ContactFormSubmission |
Soumission persistée (sans FK vers ContactForm) |
ContactFormSubmission stocke un snapshot (contactFormLabel, fields JSON, submitterEmail, statut e-mail) pour conserver l'historique même après suppression du formulaire.
Types de champs : text, email, phone, date, select, textarea, checkbox.
Variables d'e-mail
Dans l'objet et le corps configurés en admin, syntaxe {{variable}} :
- Une variable par champ actif, dérivée du libellé (
Prénom→{{prenom}}, collision →{{prenom_12}}) {{contenu}}— récapitulatif textuel de tous les champs
Résolution : ContactFormEmailVariableResolver.
Traductions
Le bundle shippe du français uniquement (*.fr.yaml). L'app hôte peut ajouter d'autres locales en miroir.
Textes UI : ne jamais les hardcoder — toujours passer par les domaines ci-dessus.
Tests & fixtures
Fixtures : Akyos\UXForms\DataFixtures\UXFormsFixtures (formulaire démo + modèle e-mail + layout).
Checklist d'intégration rapide
- [ ]
composer require akyos/ux-forms - [ ] Bundle enregistré dans
bundles.php - [ ]
config/packages/ux_forms.yaml - [ ] Routes admin + public importées
- [ ] Mailer configuré (
MAILER_DSN) - [ ]
doctrine:migrations:migrate - [ ] Accès public
/contact-formdanssecurity.yaml - [ ] Sidebar :
include('@UXForms/admin/_sidebar.html.twig') - [ ] Stimulus : chemin
assets/controllersdu bundle - [ ] UX Toolkit + UX Icons disponibles dans l'app
All versions of ux-forms with dependencies
doctrine/orm Version ^3.0
symfony/config Version ^7.0|^8.0
symfony/dependency-injection Version ^7.0|^8.0
symfony/framework-bundle Version ^7.0|^8.0
symfony/form Version ^7.0|^8.0
symfony/http-kernel Version ^7.0|^8.0
symfony/mailer Version ^7.0|^8.0
symfony/mime Version ^7.0|^8.0
symfony/routing Version ^7.0|^8.0
symfony/security-core Version ^7.0|^8.0
symfony/translation Version ^7.0|^8.0
symfony/validator Version ^7.0|^8.0
symfony/ux-live-component Version ^3.0
symfony/ux-twig-component Version ^3.0
vich/uploader-bundle Version ^2.0
akyos/ux-filters Version ^2.0
akyos/ux-table Version ^2.0