CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Un bon livre pour apprendre/se perfectionner sur Symfony4?

DébutPage précedente
1
Page suivantePage suivante
ChoisiUnPseudo ChoisiUnPseudo
MP
Niveau 9
23 juillet 2019 à 15:43:08

Salut,

Dites connaîtriez-vous un bon livre éducatif pour apprendre ou se perfectionner sur le Framework Symfony, version 4?

Si je pose cette question,

C'est parce que chez Laravel, ils possèdent ce livre-ci présent : https://laravelupandrunning.com/ ,

Qui est tout simplement une mine d'or en complément de la documentation officielle, pourtant déjà très détaillée, pour bien débuter ou se perfectionner dans ce framework. (Il m'a personnellement bien aidé, et continue de le faire).

----------

Donc voila,

Je me demandais, est-ce que chez Symfony ils ont aussi, outre les vidéos de SymfonyCasts, qui sont à jour, un livre qui explique les fondamentaux de ce framework ainsi que quelques concepts avancés?

Et en version 4 si possible,

Car la version 2 est dépréciée, et la 3 le sera très bientôt à la sortie de Symfony 5 en novembre : https://symfony.com/roadmap/5.0

Où plusieurs composants nouveaux, dont notamment le Symfony Mailer depuis la version 4.3 : https://symfony.com/doc/current/mailer.html ,viendront totalement remplacer ce qui se fait actuellement.

(Sans parler de l'autowiring qui rend obsolète certaines façons de structurer son code dans les versions inférieures au 4).

----------

Bien à vous.

Message édité le 23 juillet 2019 à 15:47:59 par ChoisiUnPseudo
Cryptography Cryptography
MP
Niveau 9
23 juillet 2019 à 16:22:33

Tu ne trouveras rien.

Les livres sont tous en version 3 ou 2, donc dépréciés pour un usage propre à Symfony 4.

Symfony est un excellent framework, mais il ne possède pas une communauté riche internationalement parlant, comme Laravel.

Donc tu vas devoir la plupart du temps te démerder en trifouillant dans le code source. C'est d'ailleurs ce qui rend ce framework moins populaire que Laravel.

Et d'ailleurs si tu observes bien, tu verras que depuis les dernières versions, il copie la façon de faire de Laravel : migration, l'authentification .bin/console make:auth => https://symfony.com/doc/4.2/security/form_login_setup.html , qui n'est qu'un semblant copier/coller de php artisan make:auth , etc.

En soit c'est bien, ils ont enfin compris que les devs n'ont pas que ça à faire de programmer à chaque fois de A à Z une authentification, ou un envoie de mail, etc..

Ils ont commencé à tilter avec la sortie de Symfony Flex dans la version 4, mais c'était trop tard.

Et c'est précisément ce qui les a fait perdre en popularité, cette putain d'usine à gaz.

Bref..

Tu ne trouveras de livres actuellement décents capable de t'expliquer les bonnes pratiques de Symfony 4, car :

  1. La plupart des devs sont restés figés à la version 3 voir pire : la 2. :d) ils sont donc dépréciés.
  2. Ils refusent ainsi volontairement de se mettre à jour, alors que le créateur lui-même les a conseillé de le faire désormais tous les 6 mois à compter de la version 4.

Y'a un danger là-dedans : c'est que les entreprises feignasses qui décident de conserver leurs technos vieillissantes, se voient bouder par les nouveaux devs Symfony spé version 4+, qui préféreront se tourner vers une entreprise qui utilise des technologies plus récentes.

Parce que entre la version 2, une bonne partie de la 3, et la 4, c'est le jour et la nuit..

Sans tenir compte du fait que dans le Web, tout évolue vite...

A la limite si l'anglais n'a plus aucun secret pour toi, j'te conseille ce cours sur Udemy de Piotr Jura : https://www.udemy.com/learn-symfony-4-hands-on-creating-a-real-world-application/

Il n'y a pas plus complet, et il couvre presque tous les sujets abordés. (Il devrait faire un livre sérieux :rire:)

Message édité le 23 juillet 2019 à 16:25:54 par Cryptography
ChoisiUnPseudo ChoisiUnPseudo
MP
Niveau 9
23 juillet 2019 à 16:40:22

Ok merci :ok:

tbol tbol
MP
Niveau 19
23 juillet 2019 à 22:45:47

Si tu sais programmer tu as juste besoin de la doc non ?

ChoisiUnPseudo ChoisiUnPseudo
MP
Niveau 9
24 juillet 2019 à 01:33:33

Oui c'est vrai, mais j'aime bien avoir un support papier histoire de feuilleter tranquillement sans nécessairement être devant mon pc.

20_cent_2017 20_cent_2017
MP
Niveau 10
24 juillet 2019 à 08:38:56

C’est quoi ce ramassis de conneries ?

Non personne n’est rester figé sur la version 2 ....
je parle même pas du reste ....

Enfin bon ...
Y’as pas de livre mais la doc est suffisamment riche ...

Cryptography Cryptography
MP
Niveau 9
24 juillet 2019 à 10:45:44

C'est surtout toi qui est un ignare.

Analyze les offres d'emploi Symfony, tu trouveras encore en majorité des entreprises restés figés à la version 2 et 3.

Et ils commencent à peine à migrer vers la version 4.

Au pif : https://www.indeed.fr/Emplois-D%C3%A9veloppeur-PHP-Symfony

Ensuite tu fais : ctrl + f avec pour recherche : Symfony 2, Symfony 3
Et tu feuillettes page par page.

J'ai la flemme de t'expliquer ensuite pourquoi ils préfèrent pour l'instant rester sur le 2

Ramassis de connerie qu'il me dit ce con.

Message édité le 24 juillet 2019 à 10:47:14 par Cryptography
PianoLuffy PianoLuffy
MP
Niveau 10
24 juillet 2019 à 10:51:31

Le 24 juillet 2019 à 08:38:56 20_cent_2017 a écrit :
C’est quoi ce ramassis de conneries ?

Non personne n’est rester figé sur la version 2 ....
je parle même pas du reste ....

Enfin bon ...
Y’as pas de livre mais la doc est suffisamment riche ...

Non il a raison. Il y a encore des entreprises sous Symfony 2.
La plupart ont la flemme de migrer pour des raisons financières.

Après si tu parles de la petite PME en région parisienne, c'est autre chose.

Cryptography Cryptography
MP
Niveau 9
24 juillet 2019 à 10:54:50

Le 24 juillet 2019 à 10:51:31 PianoLuffy a écrit :

Le 24 juillet 2019 à 08:38:56 20_cent_2017 a écrit :
C’est quoi ce ramassis de conneries ?

Non personne n’est rester figé sur la version 2 ....
je parle même pas du reste ....

Enfin bon ...
Y’as pas de livre mais la doc est suffisamment riche ...

Non il a raison. Il y a encore des entreprises sous Symfony 2.
La plupart ont la flemme de migrer pour des raisons financières.

Après si tu parles de la petite PME en région parisienne, c'est autre chose.

Non mais laisse il est complètement con le type.

Et quand je dis ceci :

Ils refusent ainsi volontairement de se mettre à jour, alors que le créateur lui-même les a conseillé de le faire désormais tous les 6 mois à compter de la version 4.

Je le tiens de la conférence de l'auteur de Symfony lui-même donnée en Juin 2019 : https://www.youtube.com/watch?v=yfTLx-fcJio

Mais monsieur veut faire son intéressant askip :)

Message édité le 24 juillet 2019 à 10:59:17 par Cryptography
20_cent_2017 20_cent_2017
MP
Niveau 10
24 juillet 2019 à 13:51:09

Je vais préciser quelques points ... Avant d'insulter les gens on est pas ici pour parler des ets françaises de symfony ....

Dans un premier temps il faut revenir a la réalité économique des choses ...
Effectivement les offres sont base sur Symfony 2, y'a plusieurs raisons:
:d) les rhs qui ne connaissent rien et que c'est cool comme nom qui ne font pas de symfony2 possiblement (j'ai eu le cas du cnes)
:d) que c'est pour faire de la maintenance applicative, et donc ton ets n'as peut être pas le temps, ni les moyen d'upgradé

Donc tu vas devoir la plupart du temps te démerder en trifouillant dans le code source. C'est d'ailleurs ce qui rend ce framework moins populaire que Laravel.

Oui auprès des flemmards, plus je trifouille le code plus j'en apprend plus sur Symfony ...
Maintenant je fais des forms en API ...

En soit c'est bien, ils ont enfin compris que les devs n'ont pas que ça à faire de programmer à chaque fois de A à Z une authentification, ou un envoie de mail, etc..

Cela depend des besoins... et puis les commandes tous le monde peux les créer. perso, je risque de pas l'utilisé celle-ci.

Et c'est précisément ce qui les a fait perdre en popularité, cette putain d'usine à gaz.

Toujours le même arguments foireux, à traduire je maîtrise pas donc j'install tous... et puis sérieux Symfony reste quand même plus rapide qu'un vieux Wordpress mal fait ... ça les histoire de bench on peux en parler longtemps ...

Parce que entre la version 2, une bonne partie de la 3, et la 4, c'est le jour et la nuit..

EuhAlors là non pas du tous, certe y'a des changement dans la forme, mais pas dans le fond. Apres oui forcement si tes rester sur la version 2,0,1 de Symfony ça risque d'être compliqué. Mais c'est certainement pas le jour et la nuit... ça fonctionne pareille !

Thymotep Thymotep
MP
Niveau 10
24 juillet 2019 à 15:52:56

Le 24 juillet 2019 à 08:38:56 20_cent_2017 a écrit :
C’est quoi ce ramassis de conneries ?

Non personne n’est rester figé sur la version 2 ....
je parle même pas du reste ....

Enfin bon ...
Y’as pas de livre mais la doc est suffisamment riche ...

Je vois que tu fais toujours autant de remarque constructive. :(

20_cent_2017 20_cent_2017
MP
Niveau 10
24 juillet 2019 à 17:01:35

Le 24 juillet 2019 à 15:52:56 Thymotep a écrit :

Le 24 juillet 2019 à 08:38:56 20_cent_2017 a écrit :
C’est quoi ce ramassis de conneries ?

Non personne n’est rester figé sur la version 2 ....
je parle même pas du reste ....

Enfin bon ...
Y’as pas de livre mais la doc est suffisamment riche ...

Je vois que tu fais toujours autant de remarque constructive. :(

A priori ça passe sur d’autre forum....

C’est con cette remarque serais pertinente si je n’avais pas expliqué mon point de vue dans mon deuxième poste...

Tu as lu ?

Bon j’ai oublié que je repasserai pour expliquer le détail...
J’ai poster ça en attendant le bus sur mon smartphone.
Je n’allais pas pondre un laïus...

Si on me demande gentiment, j’ai toujours des arguments...

Mais de nos jours le débat sur internet ça n’existe pas ... c’est juste du troll.

Cryptography Cryptography
MP
Niveau 9
24 juillet 2019 à 17:53:05

Je vais juste répondre à deux points.

D'abord ceci :

Oui auprès des flemmards, plus je trifouille le code plus j'en apprend plus sur Symfony ...

Maintenant je fais des forms en API ...

Oh Laravel est tout aussi compliqué que Symfony..

La seule différence est que Laravel cache sa complexité en utilisant pléthore de méthode "magiques", ainsi que son système de façade.

Symfony est juste plus verbeux.

Par exemple en Symfony pour insérer des données provenant de ton fomulaire dans ta DB, il te génère une instance de ton modèle à insérer dans la DB, puis te récupère une instance de l'EntityManagerInterface, vérifie ensuite si le form est valide et soumis, l'insert et enfin te redirige.

Ce qui donne un truc du style :


 $article = new Article();
// Récupération des données du formulaire
// Vérification si formulaire valide et soumis
$em->persist($article);
$em->flush();
// Redirection

Laravel peut très bien te faire un truc similaire, si tu lis des livres à ce sujet, ou feuillettes juste la documentation.

Mais il préféra une solution similaire à ceci :


  public function store(ArticleRequest $articleRequest)
    {
        // Récupération des données + validations
        $validatedData = $articleRequest->validated();

        // Upload d'une image si besoin
        $validatedData['mon_image'] = $articleRequest->image->store('article');

        // Insertion
        $article= Article::create($validatedData);

        // Redirection
        return redirect()->route('articles.show', $article->id);
    }

Terminé :).

La validation du formulaire passe par un FormRequest, qui ensuite récupère tous les champs et vérifie qu'ils sont valides.

Après quoi,il passe par son système de façade, qui, si tu t'y intéresses, tu verras en fait, qu'il ne s'agit pas de méthodes statiques, mais bien de classes particulières.

Et que pour celle-ci, ::create, il te fait implicitement, à la fois un persist(), puis un flush.

Si tu désires juste persister sans flusher, tu peux remplacer la façade ::create() par ::make()

Tu remarqueras encore qu'il passe par une méthode magique pour l'image, store() :

$validatedData['mon_image'] = $postRequest->image->store('article');

Qui correspond en vérité à ceci :

Storage::disk('public')->put('article', $file)

Où, il ne fait que te créer un dossier, article, s'il n'existe pas déjà, dans ton dossier publique, à l'intérieur duquel, il vient placer ton image.

Mais ça tu ne l'apprends qu'en allant fouiller dans le code source, ou des livres. Voir même en suivant des vidéos avec des développeurs très pédagogues et avancés sur ce framework.

L'avantage des livres, et des vidéos éducatifs, est que l'auteur te montre les secrets enfouis du framework, qu'il a découvert, et te les explique, afin que tu ne puisses pas perdre ton temps inutilement à chercher ce qu'il a déjà trouvé.

Et c'est précisement là où Laravel est plus populaire que Symfony. Tu comprends maintenant?

-----

Et enfin ceci

Toujours le même arguments foireux, à traduire je maîtrise pas donc j'install tous... et puis sérieux Symfony reste quand même plus rapide qu'un vieux Wordpress mal fait ... ça les histoire de bench on peux en parler longtemps ...

Là dessus je suis d'accord avec toi.

Trop d'automatisme peut nuire à l'apprentissage.

Si tu savais d'ailleurs à ce propos qu'apparemment, selon le créateur de Symfony, Fabien Potencier, la version 5 sera encore plus feignéante que la précédente.

C’est con cette remarque serais pertinente si je n’avais pas expliqué mon point de vue dans mon deuxième poste...

Elle n'est pertinente qu'en partie.

Bref..

Message édité le 24 juillet 2019 à 17:54:34 par Cryptography
Scorpionnocrag Scorpionnocrag
MP
Niveau 9
24 juillet 2019 à 18:26:06

C'est quoi un ETS? :(

Thymotep Thymotep
MP
Niveau 10
24 juillet 2019 à 19:49:00

Le 24 juillet 2019 à 17:01:35 20_cent_2017 a écrit :

Le 24 juillet 2019 à 15:52:56 Thymotep a écrit :

Le 24 juillet 2019 à 08:38:56 20_cent_2017 a écrit :
C’est quoi ce ramassis de conneries ?

Non personne n’est rester figé sur la version 2 ....
je parle même pas du reste ....

Enfin bon ...
Y’as pas de livre mais la doc est suffisamment riche ...

Je vois que tu fais toujours autant de remarque constructive. :(

A priori ça passe sur d’autre forum....

C’est con cette remarque serais pertinente si je n’avais pas expliqué mon point de vue dans mon deuxième poste...

Tu as lu ?

Bon j’ai oublié que je repasserai pour expliquer le détail...
J’ai poster ça en attendant le bus sur mon smartphone.
Je n’allais pas pondre un laïus...

Si on me demande gentiment, j’ai toujours des arguments...

Mais de nos jours le débat sur internet ça n’existe pas ... c’est juste du troll.

Justement, ça tombe bien que tu parles des autres forums, parce que ce n'est pas ce que j'ai lu du débat entre modérateurs à ton sujet. En vrai, si tu es si bon développeur, que viens-tu faire ici ? Va voir dans d'autres communautés de développeur, j'imagine qu'ils réagiront de la même façon. Tu commences toujours pas sortir n'importe quoi, et ensuite tu apportes des arguments (légitime ou non d'ailleurs).

Clairement j'aimerai pas te connaitre professionnellement, ça doit être un enfer pour tes collègues si tu te comportes de la même façon que sur les forums de JVC.

PS : Oui, j'ai lu avant de te répondre.

TidoDaWiseOlMan TidoDaWiseOlMan
MP
Niveau 7
24 juillet 2019 à 20:30:24

Le 24 juillet 2019 à 18:26:06 Scorpionnocrag a écrit :
C'est quoi un ETS?

Une entreprise.

@Cryptography : j'ai clairement adoré ta réponse concernant Laravel. Je n'ai jamais eu l'occasion d'en faire jusqu'à présent (uniquement un peu de Symfony 3 et 4) et ton commentaire m'a donné envie de m'y mettre. Si je peux réaliser la même chose que sur Symfony plus rapidement je prends. Surtout qu'il y a énormément d'outils dans la suite Laravel que je suis déjà un peu de loin comme Echo ou Horizon. :)

Message édité le 24 juillet 2019 à 20:31:11 par TidoDaWiseOlMan
20_cent_2017 20_cent_2017
MP
Niveau 10
24 juillet 2019 à 21:42:28

Le 24 juillet 2019 à 17:53:05 Cryptography a écrit :
Je vais juste répondre à deux points.

D'abord ceci :

Oui auprès des flemmards, plus je trifouille le code plus j'en apprend plus sur Symfony ...

Maintenant je fais des forms en API ...

Oh Laravel est tout aussi compliqué que Symfony..

La seule différence est que Laravel cache sa complexité en utilisant pléthore de méthode "magiques", ainsi que son système de façade.

Symfony est juste plus verbeux.

Par exemple en Symfony pour insérer des données provenant de ton fomulaire dans ta DB, il te génère une instance de ton modèle à insérer dans la DB, puis te récupère une instance de l'EntityManagerInterface, vérifie ensuite si le form est valide et soumis, l'insert et enfin te redirige.

Ce qui donne un truc du style :


 $article = new Article();
// Récupération des données du formulaire
// Vérification si formulaire valide et soumis
$em->persist($article);
$em->flush();
// Redirection

Laravel peut très bien te faire un truc similaire, si tu lis des livres à ce sujet, ou feuillettes juste la documentation.

Mais il préféra une solution similaire à ceci :


  public function store(ArticleRequest $articleRequest)
    {
        // Récupération des données + validations
        $validatedData = $articleRequest->validated();

        // Upload d'une image si besoin
        $validatedData['mon_image'] = $articleRequest->image->store('article');

        // Insertion
        $article= Article::create($validatedData);

        // Redirection
        return redirect()->route('articles.show', $article->id);
    }

Terminé :).

La validation du formulaire passe par un FormRequest, qui ensuite récupère tous les champs et vérifie qu'ils sont valides.

Après quoi,il passe par son système de façade, qui, si tu t'y intéresses, tu verras en fait, qu'il ne s'agit pas de méthodes statiques, mais bien de classes particulières.

Et que pour celle-ci, ::create, il te fait implicitement, à la fois un persist(), puis un flush.

Si tu désires juste persister sans flusher, tu peux remplacer la façade ::create() par ::make()

Tu remarqueras encore qu'il passe par une méthode magique pour l'image, store() :

$validatedData['mon_image'] = $postRequest->image->store('article');

Qui correspond en vérité à ceci :

Storage::disk('public')->put('article', $file)

Où, il ne fait que te créer un dossier, article, s'il n'existe pas déjà, dans ton dossier publique, à l'intérieur duquel, il vient placer ton image.

Mais ça tu ne l'apprends qu'en allant fouiller dans le code source, ou des livres. Voir même en suivant des vidéos avec des développeurs très pédagogues et avancés sur ce framework.

L'avantage des livres, et des vidéos éducatifs, est que l'auteur te montre les secrets enfouis du framework, qu'il a découvert, et te les explique, afin que tu ne puisses pas perdre ton temps inutilement à chercher ce qu'il a déjà trouvé.

Et c'est précisement là où Laravel est plus populaire que Symfony. Tu comprends maintenant?

-----

Et enfin ceci

Toujours le même arguments foireux, à traduire je maîtrise pas donc j'install tous... et puis sérieux Symfony reste quand même plus rapide qu'un vieux Wordpress mal fait ... ça les histoire de bench on peux en parler longtemps ...

Là dessus je suis d'accord avec toi.

Trop d'automatisme peut nuire à l'apprentissage.

Si tu savais d'ailleurs à ce propos qu'apparemment, selon le créateur de Symfony, Fabien Potencier, la version 5 sera encore plus feignéante que la précédente.

C’est con cette remarque serais pertinente si je n’avais pas expliqué mon point de vue dans mon deuxième poste...

Elle n'est pertinente qu'en partie.

Bref..

tous cela correspond à la préférence d'un dev...

Apres oui j'ai pas forcement raison, c'est un point de vue pas une vérité issue de mon expérience ...

Justement, ça tombe bien que tu parles des autres forums, parce que ce n'est pas ce que j'ai lu du débat entre modérateurs à ton sujet. En vrai, si tu es si bon développeur, que viens-tu faire ici ? Va voir dans d'autres communautés de développeur, j'imagine qu'ils réagiront de la même façon. Tu commences toujours pas sortir n'importe quoi, et ensuite tu apportes des arguments (légitime ou non d'ailleurs).

Clairement j'aimerai pas te connaitre professionnellement, ça doit être un enfer pour tes collègues si tu te comportes de la même façon que sur les forums de JVC.

Imagine que ce soit le contraire plutôt ? Je suis pas un emmerdeur, c'est plutôt le contraire ...
Je pense que si tu voyais la moutier de ce que je vois passer de temps en temps, tu comprendrais (je vous ferais l'étude de cas de prestashop ;) c'est cocasse )...

Je pense que vous prenez les chose trop à cœur enfaîte.... c'est pas bon pour vous !
Surtout que le second dégrée à l'écrit ça passe pas trop :)
C'est qu'un forum.Mais le monde de l'internet est très négatif, agressif... je participe certainement .

La c'est du pur HS comme le démontage en règle de Symfony... Qui ne réponds pas à la question ...

On peux dire ce qu'on sur ma pomme, perso je connais pas Laravel, et je n'ai jamais jugée laravel.
Ce que je ferais surement jamais ...

Cryptography Cryptography
MP
Niveau 9
24 juillet 2019 à 22:04:53

Le 24 juillet 2019 à 20:30:24 TidoDaWiseOlMan a écrit :

Le 24 juillet 2019 à 18:26:06 Scorpionnocrag a écrit :
C'est quoi un ETS?

Une entreprise.

@Cryptography : j'ai clairement adoré ta réponse concernant Laravel. Je n'ai jamais eu l'occasion d'en faire jusqu'à présent (uniquement un peu de Symfony 3 et 4) et ton commentaire m'a donné envie de m'y mettre. Si je peux réaliser la même chose que sur Symfony plus rapidement je prends. Surtout qu'il y a énormément d'outils dans la suite Laravel que je suis déjà un peu de loin comme Echo ou Horizon. :)

Salut !

Ah Laravel, je pourrais en faire ma femme :hap:

Plus sérieusement,

De base je suis un développeur Symfoy 3, mais je me suis m'y à m'intéresser à Laravel depuis 2016, alors qu'il n'était encore qu'en version 5.3.

Ce qui m'a séduit dans ce Framework, c'est sa simplicité d'utilisation, et la rapidité de déploiement d'une application lorsqu'on est à l'aise dans ce framework.

Laravel a vraiment cet avantage d'être user-friendly puisqu'il part de base avec pas mal de packages :

  • Authentification :
    • Enregistrement, token de vérification d'enregistrement envoyé par mail, login, oublie de mot de passe, se souvenir de moi.
  • Le polymorphisme :
    • Ce truc c'est juste de la folie..

.
Disons que tu as 2 tables : utilisateurs | articles, et que ton client souhaite que chacun des utilisateurs, aient un avatar, et que chaque article,aient une image descriptive.
.
Généralement ce que l'on fait, c'est simplement d'ajouter un champ à chacune des tables respectives, et le tour est joué.

Et bien Laravel voit les choses autrement :

  1. Il va d'abord exiger de toi que tu supprimes le champs image de chacune des tables.
  2. Il va ensuite te demander de créer une nouvelle migration "Image" qui correspondera à la table dans ta DB, au sein duquel tu viendras placer ceci :
 $table->morphs('imageable');

Ce terminaison, imageable, est une convention Laravel pour le polymorphisme.

Cette méthode morphs(), viendra préfixer une terminaison à ce nom, imageable, auquel, il ajoutera un deuxième champ automatique, qu'il préfixera aussi :


imageable_id
imageable_type

Avec pour code source :


    /**
     * Add the proper columns for a polymorphic table.
     *
     * @param  string  $name
     * @param  string|null  $indexName
     * @return void
     */
    public function morphs($name, $indexName = null)
    {
        $this->string("{$name}_type");

        $this->unsignedBigInteger("{$name}_id");

        $this->index(["{$name}_type", "{$name}_id"], $indexName);
    }

Il reste ensuite à définir le polymorphisme sur le modèle mère, Image :


    public function imageable()
    {
        return $this->morphTo();
    }

Et enfin sur les modèles filles : Article et Utilisateur :


    public function image()
    {
       /**
        * Le deuxième paramètre fait référence à la méthode du polymorphisme pour l'image.
        * (Cf. Juste au-dessus).
        */
        return $this->morphOne(Image::class, 'imageable');
    }

(On peut s'épargner une répétition en définissant un trait dans lequel on viendra placer cette dernière méthode, et alors on aura qu'à l'appeler dans les modèles filles).

Une fois fait, il ne reste plus qu'à définir le controller, et à alimenter la vue et le tour est joué.

----------

Ce qui va se produire en base de donnée à l'insertion d'une image d'avatar ou d'article, est ceci :

La table Image, à l'emplacement :

  • Imageable_id : contiendra l'identifiant de l'article ou de l'image référencié.

Et pour s'assurer qu'il s'agit bien d'une image destinée au modèle Utilisateur ou celui de l'Article, il viendra le renseigner au champ Imageable_type comme ceci :

  • Imageable_type : App\Article ou App\Utilisateur s'il s'agit d'une image avatar.

Là c'était pour la relation one-one.
Laravel propose aussi le polymorphisme sur les relations OneToMany, et ManyToMany.

Ce truc prend moins de 5 minutes lorqu'on est à l'aise.

Bonne chance pour le faire sur Symfony sans être extrêmement verbeux.

-----

Et c'est un de ces nombreux packages !!

Il part de base aussi avec :

  • Un système d'envoie de mail via mailtrap, mailgun ou autre, avec son mailable capable de générer des markdowns.
  • Faker déjà pré-installé pour les factory et le seeding
  • Un service API où il te fait le 3/4 du taf, en te générant tes ressources, avec notamment :
    • Laravel Passport qui se charge de ton authentification API : https://laravel.com/docs/5.8/passport
    • Laravel Socialite, pour les authentification via les API Google, Facebook, Github et cie : https://laravel.com/docs/5.8/socialite
  • Un système de paiement e-commerce : https://laravel.com/docs/5.8/billing
  • Le Framework Front-End VueJS avec la librairie Axios.
    • Vous voulez faire unE SPA VueJS/Laravel? Pas de problème.
  • Etc.. (Liste non-exhaustive).

Tu peux même y ajouter une debugbar admin à la Symfony : https://github.com/barryvdh/laravel-debugbar
Ou même le service pattern repository : https://github.com/okaybueno/laravel-repositories

Bref. Laravel c'est vraiment un framework qui rend heureux.

Apprends-le vdd, tu ne seras pas déçu :oui:

Message édité le 24 juillet 2019 à 22:06:11 par Cryptography
tbol tbol
MP
Niveau 19
25 juillet 2019 à 16:19:53

Le 24 juillet 2019 à 01:33:33 ChoisiUnPseudo a écrit :
Oui c'est vrai, mais j'aime bien avoir un support papier histoire de feuilleter tranquillement sans nécessairement être devant mon pc.

Tu pourrais avoir une tablette si tu aimes lire des docs sur ton canapé, ça éviterais d'avoir à imprimer un tas de trucs, on peu trouver des tablettes Android correctes pour presque rien. En informatique, souvent tout ce qui est livre papier c'est déjà périmé quand ça sort :rire:

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment