Section symfony

Sélection_218-1

Symfony 4 / Sonata : Créer une interface de paramétrage.

Écrit par tbourdin le 23/08/2020
Catégorie :   PHP, symfony, Sonata
Tags :   sonata, symfony
Un des besoins récurent d’un projet web, est d’avoir besoin de paramètres globaux pour votre application. Généralement, on stock ça dans un fichier yml et le tour est joué. Mais cela se complique lorsque le client demande à pouvoir avoir la main dessus.Lui donner les accès FTP/SSH pour les modifier ? Non, certainement pas. Surtout si c’est pour refiler cette tache au stagiaire.Il faudra lui mettre à disposition u...
entete_api

Syfony 4 / Sonata : Créer une API rest

Écrit par tbourdin le 18/08/2020
Catégorie :   PHP, symfony, Sonata
Tags :   symfon, sonata, api, swagger
Dans cet article nous allons voir comment créer une API rest avec FOS/rest-bundle, avec une authentification, et un générateur de documentation de type swagger. Liste des bundle nécessaire :friendsofsymfony/rest-bundle : Fournis une série d’outils d’aide au développement d’une API restfullhttps://github.com/FriendsOfSymfony/FOSRestBundlejms/serializer-bundle : Permet la sérialisation d&r...
entete_sonata_page

Symfony 4 / Sonata : Installer le CMS Sonata Page

Écrit par tbourdin le 07/07/2020
Catégorie :   PHP, symfony, Sonata
Tags :   sonata, CMS, Sonata-page, symfony
Sonata est une suite de bundle pour Symfony 4. L’un d’entre eux permet de gérer du contenu à la manière de WordPress.Vous trouverez assez peu de documentations sur le net, et pour cause, l’installation est bugué, et les rares personnes qui se sont frotté au bugtracker sur github, se sont vu répondre un RTFM bien en règle.Rester sur ce genre d’échec n’est pas vraiment mon style.Voici donc comment installer et...
Sélection_238-1

Symfony 4/ Sonata : Créer une page d’export csv

Écrit par tbourdin le 02/04/2020
Catégorie :   PHP, symfony, Sonata
Tags :   sonata, export, csv, symfony
Les interfaces par défaut de Sonata sont des CRUD. Ce qui est archi pratique (sinon on ne l’utiliserais pas). Mais une administration n’est pas uniquement composée de CRUD. Ici nous allons voir comment on peux faire une page d’export de donnée de manière simple, en supprimant les vues par défaut des interfaces, et en créant la notre pour gérer notre bouton d’export. 1 – Ajout de la li...
Sélection_131

Symfony 4/ Sonata : Créer une interface imbriquée (nested interface)

Écrit par tbourdin le 02/03/2020
Catégorie :   PHP, symfony, Sonata
Tags :   sonata, symfony
Nous allons voir comment on construit une interface d’admin, composée de plusieurs tables qui ont des relations Many2Many.Reprenons notre exemple d’interface many/many disponible ici Nous avons une table zone, qui est composé de plusieurs éléments de la table départements. Sur ces départements, nous avons des agences.Pour couronner le tout, et pour donner du sens à cette chaîne de donn&e...
Sélection_128-1

Symfony4 / Sonata : Créer un admin Many/Many

Écrit par tbourdin le 01/03/2020
Catégorie :   PHP, symfony, Sonata
Tags :   sonata, symfony
Nous allons ici développer l’ensemble des manipulations pour construire une interface many to many via Sonata.Nous prendrons comme exemple une gestion de zones avec une liaison par départements. Chaque zones est donc constitué d’un liaison multiple avec la table département.Sous MysqlWorkbench, cela donne ceci : Pour générer les entity, nous utilisons la commande suivante : php bin/console doctrine:mapping:im...
Selection_428

Symfony / Sonata : Ajouter une fonction clone dans un CRUD

Écrit par tbourdin le 24/02/2020
Catégorie :   PHP, symfony
Tags :   sonata, symfony
Pour ajouter une fonctionnalité de duplication d’objet sur une liste CRUD, il faut modifier la liste en ajoutant le bouton, configurer une route, et exécuter un code de duplication d’objet, et pour finir, référencer le controller qui accueillera notre fonction dans notre interface, via son service.Ajouter le bouton :Dans votre controller ajouter le bouton en donnant en référence le template du bouton.Ici nous mettons le path ‘Admin/l...
Sélection_082-1

Symfony 4 / Sonata : Créer une interface CRUD imbriquée (child 1->N) avec l’ordre en drag’n Drop

Écrit par tbourdin le 21/02/2020
Catégorie :   PHP, symfony, Sonata
Tags :   sonata, drag'n drop, symfony
En gros on souhaites faire une interface CRUD, 1N, avec laquelle, lorsque l’on est sur l’édition d’un élément, on ajoute un panel pour gérer tous les éléments fils.Ici nous avons une table wtype, avec une table wconf qui contient une série d’enregistrement reliés a un item wtype. Tout comme pour l’exemple d’implémentation du sortable avec drag&r...
Sélection_082-1

Symfony 4 / Sonata : Gérer l’ordre en drag’n drop

Écrit par tbourdin le 20/02/2020
Catégorie :   PHP, symfony, Sonata
Tags :   sonata, drag'n drop, symfony
Il faut installer pixassociates/sortable-behavior-bundle et stof/doctrine-extensions-bundle composer require stof/doctrine-extensions-bundle composer require pixassociates/sortable-behavior-bundle Ajouter la configuration dans pix_sortable.yamlEn ajoutant l’entité et le champs dans position_field (ici wconf, et le champs position) pix_sortable_behavior: db_driver: orm # mongodb default value : orm position_field: default: position #default value : position ...
Sélection_072-1

Symfony 4 / Sonata : forms types

Écrit par tbourdin le 19/02/2020
Catégorie :   PHP, symfony, Sonata
Tags :  
Voici une liste de forms types comums utilisés dans les interfaces d’admin.Date time picker Ajouter le template dans le fichier config/packages/twig.yaml twig: form_themes: - '@SonataCore/Form/datepicker.html.twig' Et dans le controller : $formMapper->with('Date d\'activation', ['class' => 'col-md-4 abcdaire']) ->add('activation_debut', DatePickerType::class, ['required' => false, 'label'=>'Activation début','attr...
Sélection_037

Symfony 4 / Sonata ajouter un filtre lié a une entité OneToMany

Écrit par tbourdin le 10/02/2020
Catégorie :   PHP, symfony, Sonata
Tags :  
Les filtres sont géré dans la méthode configureDatagridFilters protected function configureDatagridFilters(DatagridMapper $datagridMapper) { $filers=$datagridMapper->getAdmin()->getFilterParameters(); } On peu rajouter un filtre simple sur un titre ou n’importe quel paramètre de notre entité.Le paramètre show_filter permet d’afficher celui-ci au chargement de la page. Combiné avec la valeur de $filters on peut spéc...
Sélection_033

Symfony 4 / Sonata : Utiliser une clef primaire avec un /

Écrit par tbourdin le 10/02/2020
Catégorie :   PHP, symfony, Sonata
Tags :  
Aussi bizarre que cela puisse paraître j’ai du utiliser une entity avec une primary key positionné sur un champ de type varchar, et certaines valeurs contenaient un « / ».Tant que l’on est pas confronté au problème, impossible de se dire que cela va poser un soucis. Et la c’est le drame. An exception has been thrown during the rendering of a template ("Parameter "id" for route "admin_app_wtype_...
Sélection_088

Symfony 4 / Sonata : Créer une administration OneToMany (1N)

Écrit par tbourdin le 15/01/2020
Catégorie :   PHP, symfony, Sonata
Tags :  
Nous allons créer une une interface d’administration 1N, avec deux entités. La première One, et la seconde Many, et faire un panel d’admin pour la table One, qui pourras affected plusieurs éléments de la table Many. Pour corser le truc, on s’ajoute quelques paramètres additionnels, tel que des champs timestamps pour une date de synchro avec un SI, et des champs primary qui ne s’appellent pas ID et qui ne sont pas auto incr&eac...

Symfony 4 / Sonata : Créer une authentification frontend

Écrit par tbourdin le 14/01/2020
Catégorie :   PHP, symfony
Tags :  
Pour utiliser une table différente de celle par défaut pour l’authentification,Il faut d’abords créer notre entity qui va gérer nos utilisateurs.Cette entity doit ensuite être implémenté à UserInterface.Il faut donc ajouter un référence au composant et l’implémenter : <?php namespace App\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doct...
Sélection_090

Symfony 4 / Sonata : Initialiser un projet Symfony 4 + Sonata + FosUser + Media

Écrit par tbourdin le 13/01/2020
Catégorie :   PHP, symfony
Tags :  
Voici les commandes pour initialiser un projet symfony, avec un admin sécurisé. On commence par installer le skeleton du projet.composer create-project symfony/skeleton nom-du-projet On rajoute les briques nécessaires : cd nom-du-projet composer require symfony/debug-pack --no-update composer require symfony/maker-bundle --dev --no-update composer require sonata-project/doctrine-orm-admin-bundle --no-update composer require templating --no-update compose...