Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
projets:mca:code [11/05/2019 13:32] – [Contrôleurs] rgrondin | projets:mca:code [11/09/2019 14:51] (Version actuelle) – rgrondin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Code de MyCentraleAssos ====== | ||
+ | Le code de MyCentraleAssos est ouvert uniquement à l' | ||
+ | ===== Technologies utilisées ===== | ||
+ | MyCentraleAssos utilise la norme de développement du GInfo avec les technologies suivantes : | ||
+ | * Framework Symfony 4 avec les modules usuels : | ||
+ | * Twig pour les templates | ||
+ | * Doctrine pour l'ORM | ||
+ | * FOSUserBundle pour la gestion des utilisateurs | ||
+ | * Webpack Encore pour la gestion des assets (CSS & JS) | ||
+ | * Des modules un peu moins usuels pour certains besoins spécifiques : | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * TCPDF avec [[https:// | ||
+ | |||
+ | La liste complète ainsi que les versions sont disponibles sur le [[https:// | ||
+ | |||
+ | L' | ||
+ | |||
+ | Les technologies utilisées pour le développement sont : | ||
+ | * Composer pour la gestion de dépendances back (PHP) | ||
+ | * NPM pour la gestion de dépendances front (Modules JS etc...) | ||
+ | |||
+ | De plus diverses libraries sont utilisées en front : | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | La liste complète ainsi que les versions sont disponibles sur le [[https:// | ||
+ | ===== Entités ===== | ||
+ | Le schéma relationnel de MyCA peut être résumé par le diagramme UML suivant : | ||
+ | {{ : | ||
+ | |||
+ | Le schéma est correct à quelques champs près pour quelques entités. | ||
+ | |||
+ | ==== Utilisateurs ==== | ||
+ | Détail | ||
+ | |||
+ | ==== Associations ==== | ||
+ | Détail | ||
+ | |||
+ | ==== Cotisations ==== | ||
+ | Détails | ||
+ | |||
+ | ===== Contrôleurs ===== | ||
+ | les controllers sont répartis suivant une logique fonctionnelle dans divers dossiers : | ||
+ | * **/ | ||
+ | * // | ||
+ | * **/ | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * **/ | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * **/ | ||
+ | * **/ | ||
+ | |||
+ | ===== Particularités de code de MyCentraleAssos ===== | ||
+ | ==== Envoi de mails ==== | ||
+ | Pour envoyer des mails facilement, on peut utiliser le service Mailer écrit pour My. Pour l' | ||
+ | <code php> | ||
+ | * @Route("/ | ||
+ | * @Security(" | ||
+ | */ | ||
+ | public function addMember(Groupe $groupe, Request $request, Mailer $mailer) | ||
+ | {</ | ||
+ | |||
+ | Celui-ci permet d' | ||
+ | |||
+ | Utilisation : <code php> | ||
+ | * **Destinataire :** array [email => nom] | ||
+ | * **Titre :** string (titre du mail) | ||
+ | * **params :** array, paramètres passés au render du twig | ||
+ | * **html_template :** chemin du template html twig | ||
+ | * **plain_template :** chemin du template txt twig (sans html) | ||
+ | * **pice_jointe :** array | ||
+ | |||
+ | Exemple d' | ||
+ | <code php> | ||
+ | [$user-> | ||
+ | 'Vous avez été ajouté au groupe ' | ||
+ | [' | ||
+ | ' | ||
+ | ' | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | Pour un exemple avec pièces jointes voir le **CotisationController.php** | ||
+ | |||
+ | ==== Champ de recherche d' | ||
+ | Pour mettre un champ de recherche d' | ||
+ | |||
+ | Exemple : <code html>< | ||
+ | ou un form avec twig : <code html>{{ form_row(form.user, | ||
+ | |||
+ | Import du fichier JS : <code html>< | ||
+ | |||
+ | **Très important :** lors de l' | ||
+ | <code php> | ||
+ | { | ||
+ | $builder | ||
+ | [...] | ||
+ | -> | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ]) | ||
+ | [...} | ||
+ | ; | ||
+ | |||
+ | // Comme pas de choix disponibles sur le User (autocomplete), | ||
+ | $builder-> | ||
+ | $data = $event-> | ||
+ | |||
+ | if(!$data || empty($data[' | ||
+ | |||
+ | $event-> | ||
+ | [ | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | return $repo-> | ||
+ | }, | ||
+ | ' | ||
+ | ]); | ||
+ | }); | ||
+ | }</ | ||
+ | |||
+ | **Cas particulier :** Non validation du formulaire (sans rafraîchissement) on peut réinitialiser le champ via le code suivant (exemple ajout utilisateur dans groupe sans rechargement) : | ||
+ | <code javascript> | ||
+ | let uid = $(this).val(), | ||
+ | gid = $('# | ||
+ | csrf = $('# | ||
+ | |||
+ | if(!uid) | ||
+ | return; | ||
+ | |||
+ | $(this).val('' | ||
+ | | ||
+ | [...} | ||
+ | </ | ||
+ | |||
+ | ==== DataTable ==== |