Ajouter un champ de texte statique dans un formulaire EasyAdmin
EasyAdmin est un bundle Symfony qui permet de générer rapidement des interfaces d’administration pour votre application. Il propose de nombreux outils pour répondre aux besoins courants d’une interface d’administration : types de champs personnalisés, filtres, actions custom, layouts paramétrables avec des fieldsets, des onglets, des colonnes, etc.
Nous employons fréquemment EasyAdmin pour nos projets Symfony, et nous apprécions particulièrement sa simplicité d’utilisation et sa flexibilité. Cependant, il arrive parfois que nous ayons besoin d’ajouter des fonctionnalités qui ne sont pas directement supportées. Le bundle propose de nombreux moyens de personnaliser les formulaires : surcharge de templates, création de types de champs personnalisés, etc.
Nous avons récemment souhaité ajouter un champ de texte statique dans un formulaire EasyAdmin. Ce champ devait afficher une valeur non modifiable, provenant directement de l’entité, afin d’apporter davantage de confort à l’utilisateur.
Section intitulée creation-d-un-form-type-personnaliseCréation d’un Form Type personnalisé
Nous avons commencé par l’écriture d’un Form Type personnalisé, qui étend le champ TextType de Symfony. Ce champ TextType est un champ de texte classique, mais nous avons ajouté l’option « disabled » à true, pour empêcher l’utilisateur de modifier sa valeur.
<?php
namespace App\Type\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class StaticTextType extends AbstractType
{
public function getParent(): ?string
{
return TextType::class;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'disabled' => true,
]);
}
}
Une fois le type de champ ajouté, nous pouvons créer un « field » EasyAdmin pour faciliter l’intégration du Form Type dans les différents écrans de l’interface d’administration :
<?php
namespace App\Admin\Field;
use App\Form\Type\StaticTextType;
use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldInterface;
use EasyCorp\Bundle\EasyAdminBundle\Field\FieldTrait;
final class StaticTextField implements FieldInterface
{
use FieldTrait;
/**
* @param string|false|null $label
*/
public static function new(string $propertyName, $label = null): self
{
return (new self())
->setProperty($propertyName)
->setLabel($label)
->setFormType(StaticTextType::class)
;
}
}
Section intitulée definition-du-template-associeDéfinition du template associé
Ensuite, nous avons créé un template Twig pour afficher le champ de texte statique. Ce template est très simple, il affiche simplement la valeur du champ :
# templates/admin/form-theme.html.twig
{% block static_text_widget %}
{{~ value ~}}
{% endblock %}
Section intitulée utilisation-du-champ-dans-easyadminUtilisation du champ dans EasyAdmin
Dernière étape, l’ajout du champ de texte statique dans un des écrans de l’espace d’administration EasyAdmin. Pour cela, nous avons utilisé la configuration pour spécifier le type de champ à utiliser :
// src/Controller/Admin/CommentController.php
use App\Admin\Field\StaticTextField;
public function configureFields(string $pageName): iterable
{
// ...
yield StaticTextField::new('name');
// ...
}
Afin que le rendu du champ de texte statique soit correct, nous devons déclarer quel est le thème de formulaire à utiliser pour ce champ.
// src/Controller/Admin/CommentController.php
public function configureCrud(Crud $crud): Crud
{
return parent::configureCrud($crud)
// ...
->setFormThemes(['admin/form-theme.html.twig'])
;
}
Et voilà ! Grâce à ces quelques étapes, nous avons pu ajouter un champ de texte statique dans un formulaire EasyAdmin. Cela permet d’afficher des informations non modifiables directement dans le formulaire, améliorant ainsi l’expérience utilisateur. Cette approche peut être employée pour afficher des informations provenant directement de l’entité, mais aussi d’entités liées :

Ainsi, au lieu d’utiliser un champ de type AssociationField classique qui aurait été désactivé afin de ne pas permettre sa modification, nous avons créé un champ spécifique qui correspondait exactement à nos besoins. En plus d’éviter de générer le code HTML d’un widget de formulaire désactivé, cette approche permet de clarifier l’intention du code et de rendre le formulaire plus lisible.
EasyAdmin est un outil d’une grande puissance, qui permet de créer des interfaces d’administration rapidement et efficacement. En combinant les fonctionnalités d’EasyAdmin avec des personnalisations spécifiques, il est possible de répondre à des besoins métier très rapidement et avec un haut niveau d’intégration, pour une expérience utilisateur optimale.
Commentaires et discussions
Nos formations sur ce sujet
Notre expertise est aussi disponible sous forme de formations professionnelles !
Symfony
Formez-vous à Symfony, l’un des frameworks Web PHP les complet au monde
Symfony avancée
Découvrez les fonctionnalités et concepts avancés de Symfony
Ces clients ont profité de notre expertise
Pour améliorer les performances et la pertinence des recherches sur le site e-commerce, JoliCode a réalisé un audit approfondi du moteur Elasticsearch existant. Nous avons optimisé les processus d’indexation, réduisant considérablement les temps nécessaires tout en minimisant les requêtes inutiles. Nous avons également ajusté les analyses pour mieux…
Nous avons accompagné le groupe Colliers dans la conception et le développement d’une application web, pensée pour leurs clients grands comptes. Cette plateforme permet à ces utilisateurs VIP d’accéder à des données de marché exclusives sur l’investissement immobilier et le marché locatif en Île-de-France. L’ensemble des données est présenté sous forme…
Nous avons épaulé Adrenaline Hunter, juste avant le lancement public de ses offres, sur des problématiques liées à la performance de leur application développée avec Symfony. Nous avons également mis en place un système de workflow des commandes de séjours afin que toutes les actions avec leurs différents partenaires soient réparties avec fiabilité…