Transcription
1. Introduction: Bienvenue dans cette classe sur le framework PHP symphony. C' est génial de vous avoir ici. Symphony est utilisé par de nombreuses entreprises du monde réel. Vous aurez donc à la fois de l'expérience qu'il peut utiliser dans vos projets personnels et aussi expérience
commerciale pour des aliments allant là-bas en tant qu' entrepreneur ou travaillant pour une entreprise de logiciels. Nous réalisons des projets pratiques comme tous les projets de partage de compétences et construisons une boutique de commerce électronique ensemble. Alors commençons.
2. Symfony CLI: L' interface de ligne de commande symphonique nous donnera un tas d'outils de ligne de commande que
nous pouvons utiliser pour charger des choses utiles. Pour y arriver, nous pouvons accéder à un site web symphonique et vous obtiendrez des instructions pour n'importe quelle plate-forme sur laquelle vous êtes. Donc, si vous êtes sur Mac, vous suffit de le copier dans votre terminal. Même chose avec Linux. Si vous êtes sous Windows, vous obtiendrez un exécutable téléchargeable et vous pouvez le télécharger. Et cela vous mènera à travers le processus d'installation. Quoi que vous le fassiez une fois que vous avez traversé cela, alors vous pouvez ouvrir votre terminal sur Linux ou Mac. Et vous pouvez faire invite de commande ou cygwin sur Windows. Et si vous tapez la symphonie, éclaircissons d'abord. Ensuite, si vous obtenez une commande introuvable, vous saurez que cela n'a pas fonctionné. Si vous obtenez toutes ces informations avec la Symphony CLI et toutes les commandes que vous pouvez faire, alors, vous savez que c'est configuré et prêt à partir.
3. Vérifier votre environnement: Une fois que nous avons l'interface de ligne de commande symphonique, nous pouvons vérifier si tout le reste est configuré à l'aide de l'interface de ligne de commande symphonique. Donc, si nous faisons Symphony, et si nous vérifions les exigences deux-points, cela vérifiera si nous avons tout ce dont nous avons besoin dans la configuration de PHP correctement. Et dans ce cas, bonne nouvelle, je le sais. Maintenant, il y a quelques avertissements ici qui sont des recommandations facultatives, et il y a des choses que je pourrais changer, mais vous n'avez absolument pas besoin de le faire. Tant que vous aurez le bon ici, vous pourriez ignorer les avertissements. Ceux-ci peuvent être utiles pour une configuration de production, mais au cas où Git commencerait, donc nous obtenons ceci, ok, peu importe si nous avons quelques avertissements de paire.
4. Installer Symfony: Maintenant que nous savons que nos environnements sont correctement mis en place, allons de l'avant et installons le projet symphonique. Donc quand il s'agit de la ligne de commande, et je vais taper Symphony New. Et puis on va donner le nom de notre projet. Maintenant, on pourrait faire Dash, Dash fall. Et cela installerait une symphonie et un tas de bibliothèques dont nous aurions généralement besoin dans une application web pleine pile. Mais dans ce cas, je veux garder des lignes minces que nous installons seulement ce dont nous avons besoin. Nous avons ce dont nous avons besoin et rien de plus. Et nous pouvons montrer l'installation de bibliothèques supplémentaires sur le chemin. Donc je vais sauter ça. Et je vais l'appeler projet Bike Shop. Donc juste une symphonie, un nouveau magasin de vélos. Et puis symphonie et on va commencer à créer tout ça. Donc, nous allons prendre quelques instants pour tout ce tour à travers symphonie de l'EI va et récupère toutes les dépendances. Et puis on obtient, ok, super, donc on peut ouvrir ça dans notre éditeur de code. Je vais utiliser Sublime ici. Mais tu peux utiliser ce que tu veux. Ok, gentil. Donc on a déjà un tas de dossiers là-bas. Allez dans ce répertoire public, un répertoire source. Pour que je puisse ignorer. La symphonie nous dira les choses que nous ne devrions pas nous engager à obtenir. Nous avons la, toute la configuration pour Symphony vit dans le répertoire de configuration S. Et par défaut, nous avons déjà un chargé ce truc. Et nous avons un fichier de compositeur avec un tas de dépendances ici aussi. Ok, gentil.
5. Symfony dev en dev: Maintenant que nous avons installé notre première application symphonique, allons de l'avant et lancez-la. Donc, nous sommes retournés au Terminal et nous allons cd dans le répertoire que vous venez de créer. Dans ce cas, j'ai appelé mon magasin de vélos. Et on va faire le serveur symphonique, Carillon commencer. Et cela arrêtera le serveur de développement symphonies. Nous avons juste un peu comme PHP est un serveur web intégré, mais spécifique pour Symphony. Et puis si nous allons à localhost, 8 000. Parfait. Donc, nous disons simplement la page par défaut que Symphony crée lorsque vous créez une nouvelle application. Évidemment, nous allons créer notre propre page ici, mais cela semble bien. Il est déjà en marche et fonctionne.
6. L'architecture Symfony: Dans cette leçon, je veux aborder une partie de l'architecture de base de la Symphonie. Symphony utilise une architecture MVC Model-View-Controller. Et la façon dont nous allons le faire c'est que nous allons
créer des classes qui sont appelées contrôleurs. Et à l'intérieur de ces contrôleurs, ça aura un tas de fonctions. Et chacune de ces fonctions représentera une page différente et produira certaines choses. Donc, cela pourrait être un template ou cela pourrait être un tas de Jason, ou cela pourrait être un tas de HTML brut. Quelle que soit la sortie, cette fonction retournera, elle mappera une URL à une classe spécifique et cette fonction spécifique dans cette classe, puis cette méthode retournera quelque chose. Donc, si nous regardons la façon dont la structure MVC, nous avons notre modèle, qui est que nos entités de base de données stockent généralement celles dans l'entité source. Nous avons ensuite obtenu une vue qui est généralement nos modèles vont généralement réduire à nouveau moteur. Et nous allons couvrir tout cela plus en détail au fur et à mesure que nous suivrons le cours. Et puis nous avons nos contrôleurs, qui sont nos classes PHP, qui connectent les deux ensemble. La symphonie est légèrement, lâchement couplée, il est
donc facile de découpler les choses. Ce que cela signifie, c'est que vous n'avez pas besoin d'utiliser la doctrine pour faire votre base de données et vous n'avez pas besoin d'utiliser le moteur de brindille pour faire votre modèle. Si vous voulez échanger un et propulsé pour faire vos bases de données ou Smarty pour faire vos modèles, vous pouvez. Mais la symphonie rend également les options par défaut vraiment faciles à intégrer. Donc, si vous voulez juste prendre les choses qui fonctionnent vraiment bien à la boîte et que vous ne
voulez pas gâcher en amenant différentes bibliothèques. Les choses marcheront très bien ensemble.
7. Créer un contrôleur: Maintenant, nous avons cette application en cours d'exécution. Allons de l'avant et réellement créer une page, ou au moins un simple petit monde bonjour. Donc, la première chose que nous allons devoir faire est de créer un contrôleur. Et nous avons ce dossier de contrôleur, mais il n'y a rien dedans pour le moment. Alors commençons par écrire un nouveau. Collez-le dans l'espace de noms. Et nous allons devoir retourner un objet de réponse. Symphony nous en donne un. Et puis nous allons créer nos charges de contrôle appelons cette première pelouse de contrôle. Je vais créer une méthode qui s'appelle la page d'accueil. Et ça va retourner une réponse. Et dans l'objet de réponse finlandais, nous pouvons juste lui donner une chaîne avec du HTML. Je dirai que ce parasite contrôle, frappe moi. Donc, quand ce répertoire de contrôleur source, ok, donc nous avons plus grand contrôleur de points, nous avons créé une méthode de page d'accueil va renvoyer les répondants. Et puis nous avons effectivement retourné cette réponse, que nous obtenons de la symphonie ici. Et nous retournons juste du HTML qui dit, bienvenue. Donc la prochaine chose que nous devons faire est pourquoi cette route jusqu'à
dire à Symphony quand ils devraient envoyer l'utilisateur à cette page.
8. Ajouter l'itinéraire: Pour câbler le chemin, nous devons aller dans le répertoire de configuration et trouver ces munitions routes.rb. Et quelqu'un est déjà donné comme quelque chose pour commencer ici. Disons que nous voulons d'abord cette barre oblique. Et ça va aller au premier contrôleur et on l'appelle la page d'accueil de la méthode. Donc nous lui donnons le chemin. Et je vais vous donner un contrôleur et le nom de la méthode, qui correspond à ce que nous créons ici. Et maintenant, si nous allons d'abord à la barre oblique, parfait, nous avons notre simple petit message de bienvenue.
9. Utiliser des annotations: Nous avons un itinéraire rapide ici et nous définissons cela dans la démo routes.js. Mais le problème avec ceci est alors que nous devrions ajouter chaque r2 dans ce fichier YAML. Et dans un grand projet qui deviendrait difficile très rapidement. Il existe donc un moyen plus populaire de le faire appelé annotations. Faisons ça maintenant d'abord, dé-commenter ceci, ce qui signifie que cela cessera de fonctionner. Ce qui n'est pas un problème. Parce qu'au lieu de cela, nous allons utiliser des annotations. Nous devons donc apporter l'annotation, le composant
symphonique, l'annotation de routage. Et puis tout ce que nous allons faire est d'ajouter un commentaire ici en utilisant une syntaxe d'annotation spéciale, dire racine psi slash d'abord. Ok, adorable. Nous devons donc également apporter le paquet d'annotations. Donc, nous allons juste mettre ceci en pause et nous allons le composer, exiger des annotations. Ok, maintenant, reprenons la profondeur de la symphonie. Et puis si nous essayons à nouveau maintenant, parfait, retour. Donc, nous n'utilisons plus dans les prochains homologues routes.js commentés. Maintenant, chaque fois que nous créons une méthode, nous pouvons ajouter cette annotation de ligne et dire à la symphonie ce que nous voulons que l'URI soit pour cette méthode particulière.
10. Modèle: Dans cette leçon, nous allons présenter le concept de modélisation. Donc, en général, lorsque nous construisons des sites Web, nous voulons notre logique et sont conçus pour être séparés le
plus possible afin que nous ne mélangions pas tout ensemble. Et il est vraiment facile de voir quels bits design, quels bits logiques. Et quand nous voulons éditer l'un d'eux, nous ne risquons pas de casser le dessus. Et par défaut genre de symphonie vient avec brindille. Donc, nous allons avoir besoin d'installer brindille comme une bibliothèque séparée. Et vous n'avez pas à utiliser brindille, vous pouvez brancher le moteur de modèle différent dans tel que la moustache intelligemment. Mais si vous choisissez d'aller brindille et nous irons à éveiller exemple nid. Il s'intégrera très bien à la symphonie parce que le brindille est également construit par la même équipe qui construit la symphonie. Et donc ils s'assurent qu'il s'intègre vraiment bien si vous choisissez d'utiliser cela. Vous pouvez également prendre des brindilles en dehors de Symphony et l'utiliser dans vos propres projets si vous le souhaitez, car ils sont vaguement couplés. Donc, un modèle de brindille ressemble à du HTML, mais juste avec une syntaxe de brindille spéciale. Donc, quand nous voulons ajouter une variable là-dedans, nous utilisons ce double accolades accolades, puis le nom de la variable. Et nous pouvons également y mettre une certaine logique comme des boucles, qui est où nous utilisons le crochet bouclé puis le signe de pourcentage. Et cela nous permet de faire quelques boucles. Nous pouvons également faire un peu de filtrage. Je suis, je vais passer par la façon d'utiliser tout cela dans ce module.
11. Installer Twig: Dans notre premier contrôleur, nous venons d'écrire The hates to mainland à une chaîne, ce qui est un peu désordonné. Soyez plus agréable d'avoir des modèles. Et la symphonie ne vient pas avec le templage parce qu'il est lâchement couplé. Mais il y a une bibliothèque de modèles construite par Symphony. Il intègre vraiment bien appelé brindille. Et nous pouvons aller de l'avant et installer ça maintenant. Donc nous allons retourner à notre ligne de commande. Vous voulez composer une brindille de besoin. Super, donc c'est une brindille installée. Et maintenant, il peut aller de l'avant et créer un modèle.
12. Créer un modèle: Maintenant que nous avons installé brindille, créons un modèle. Gardez-le assez simple. Et bien cône. En fait, ce pourrait être la page d'accueil, disons la page d'accueil. Et c'est tout ce dont nous avons besoin pour le moment. Appelons ça bienvenue, et nous l'appellerons point de bienvenue HTML, point brindille. Donc, un nom de modèle, puis ils type de données. Et puis nous allons ajouter cette brindille de points à la fin. Et nous allons mettre ceci dans le répertoire templates. Super, maintenant branchons ça dans notre manette.
13. Utiliser le contrôleur abstrait: Créons un contrôleur pour afficher ce modèle. Donc, nous pouvons probablement copier et coller ce code à partir du premier contrôleur, et appelons-le contrôleur de bienvenue. Dans le contrôle de la source ou le plateau direct. Je vais changer le nom. Slash bienvenue. Nous pouvons toujours appeler la page d'accueil de la méthode et Bob, puis charger dans la bibliothèque de tweets et rendre notre auto. Nous pouvons utiliser le contrôleur abstrait symphonies pour nous donner une belle petite méthode d'aide. Donc, la première chose que nous devons faire est d'apporter un contrôleur abstrait. Et puis cette classe va s'étendre. Le contrôleur abstrait s'étend maintenant même. Et ce que cela signifie, c'est que nous avons maintenant cette belle exécution la méthode où si nous lui donnons le nom de notre modèle, qui est ce que nous appelons, Hey, bienvenue à HTML cette brindille. Nous pouvons simplement retourner le résultat de cette méthode aléatoire et cela rendra le modèle. Espérons. Alors sauvegardez ce que nous avons fait et puis nous
retournerons à un serveur de développement. Et on a une barre oblique. Bienvenue. Si nous l'avons arrêté quand nous instillons des brindilles, redémarrons ça. Et on y va. Il a rendu un modèle parfait.
14. Variables dans Twig: C' est bien pour une page statique très simple. Mais de façon réaliste, à un moment donné, nous allons vouloir que le contrôleur injecte des données dans ce modèle. Et c'est vraiment facile à faire avec un petit assistant. Donc ici pour cet effort aléatoire, nous pouvons juste passer un tableau de données ici. Et dans ce cas, je vais juste ajouter quel jour c'est. C' est ce qu'on appelle la méthode de date standard avec l minuscule qui nous donnera le jour. Et puis nous pouvons ajouter cela à notre modèle aussi. Donc, disons aujourd'hui est et en brindille pour rendre une variable, nous utilisons des crochets doubles bouclés. Donc, en passant le dé ici, et puis nous rendons un modèle. Haha. Et si nous actualisons la page, il est écrit Aujourd'hui c'est mercredi, qui est le diam qui filme ça. Alors paye-le. droite. On dirait que ça marche.
15. Sécurité de Twig: Si nous rendons des variables dans le modèle, ce qui pourrait potentiellement causer des problèmes de sécurité. Mais heureusement, brindille sauf pour gérer cela en échappant par défaut. Disons que je change ceci et que je suis malicieusement passé dans une balise de script, quelque chose comme ça. Que se passerait-il alors ? Eh bien, brindille serait en fait juste le rendre dehors pour qu'il échappe aux caractères spéciaux et juste rendre notre texte brut, donc rien à craindre à ce sujet. Mais que se passe-t-il si vous avez vraiment besoin de rendre certains, Vous avez une variable qui contient du HTML et vous avez besoin que ce HTML soit rendu. Eh bien, vous pouvez le faire juste en ayant un tuyau, puis en utilisant cette fonction brute, qui dira à brindille de ne pas l'échapper. Maintenant, dans ce cas, ce serait mauvais parce que maintenant il exécute juste le code. Bien que dans ce cas est, Changeons cela à un certain petit rafraîchissement visible de l'alena. Et maintenant, nous avons ce JavaScript fou surgit. Pas bon. Donc, si vous avez besoin de rendre HTML, vous pouvez utiliser cette balise de règle. Mais vous devez vous assurer que vous avez désinfecté votre entrée pour vous assurer que personne n'y injecte des scripts dangereux. Mais par défaut, même si quelqu'un injecte un script d'une manière ou d'une autre, il le rendra simplement sous forme de texte. Ok, ça a l'air bien. Réinitialisons et S deux chapeau était. Et passer à autre chose.
16. Utiliser des mises en page: Ce modèle fonctionne, mais il n'a pas, par exemple, titre ou aucune des balises de corps de tête HTML. Maintenant, nous pourrions simplement ajouter ceci pour accueillir point HTML qui brindille, mais maintenant serait un effort énorme parce que nous devrions faire pour chaque modèle que nous avons créé. Et si jamais on voulait le mettre à jour,
il faudrait tout faire. Donc, une meilleure façon nous pouvons utiliser son héritage de modèle. Et nous pouvons créer un modèle de mise en page standard, puis l'inclure dans tout cela. Faisons ça maintenant. Donc, nous allons nous arrêter par toute cette brindille layout.html. Et nous allons enregistrer ceci dans le répertoire templates. Les widgets vont répondre. Et cela mettra l'intérieur principal de main reviendra à cela aussi bien. Et c'est sur quelques sauts de ligne ici parce que nous n'avons pas encore stylé l'en-tête sur le flotteur, donc ça ne va pas être évident. Et là, à l'intérieur, c'est là que la magie va se produire. Donc nous allons à brindille, quand nous faisons des crochets bouclés pour cent, alors nous faisons une sorte de logique. Nous allons appeler ce bloc de contenu. Et puis nous allons ajouter ce bloc n ici. On n'a pas besoin de ça, je crois. Donc, ce que nous avons fait ici, c'est que nous avons défini une mise en page. Et puis nous avons dit juste ici, nous allons placer le contenu. Donc, si nous retournons dans un modèle de bienvenue et nous allons faire quelques changements ici. Donc, je vais dire que ce modèle s'étend, garçon je HTML cette brindille. Et puis ce bit va être le bloc de contenu. Et nous pourrions ajouter autant de blocs que nous le voulions. Donc, si nous voulons un bloc photo séparé ou un bloc de tête ici, nous pourrions aussi les ajouter et nous pourrions obtenir autant de blocs que nous le voulions ici. En ce moment, en disant d'utiliser la mise en page comme base. Et dans l'espace de contenu que nous avons défini, haha, insérez ce HTML. Donc c'est rafraîchit maintenant. Et super, donc on a notre tête, on a le pied, on a tous les trucs dans le labo. Et puis au milieu, ici, nous avons notre contenu qui est spécifique à ce modèle.
17. Quels sont les ressources statiques ?: Clarifions brièvement ce que sont les actifs statiques. Nous avons donc nos pages régulières avec notre PHP, nous générons une page à la demande et qui pourrait être personnalisée pour cet utilisateur. Mais certaines choses offrent la même chose à tout le monde, telles que les images, les icônes, feuilles de
style et JavaScript. On peut les compiler et les envoyer à tout le monde. Nous pourrions les mettre dans un CDN, un réseau de diffusion de contenu. Et nous ne voulons pas qu'ils passent par la pile PHP entière parce que nous, nous n'
avons pas vraiment besoin de vérifier des choses comme les autorisations ou la personnalisation. Nous avons juste besoin de leur envoyer le CSS, et c'est de ça que nous parlons ici.
18. Servir des fichiers statiques: Symphony nous donne ce répertoire public ici pour sauver des actifs hors et ne pas le jurer, sauvant ce index.html auto-généré, qui met tout en place une symphonie complète. Donc, disons que nous voulions avoir un fichier robots.txt. On pourrait juste aller dans le répertoire public et le sauvegarder. Et puis tout de suite, si nous essayons d'y accéder, alors ça marche, ce qui est génial. Maintenant, nous pourrions faire une chose similaire pour CFS, où nous simplement l'enregistrer dans le répertoire public et ensuite nous l'avons mis là. Mais ce serait bien si nous pouvions faire quelque chose d'un peu plus élaboré avec ça. Et nous allons regarder dans le reste de ce module.
19. Le traitement de sASS: Nous avons notre site web ici, mais il a l'air assez moche. Donc, soyez gentil si nous pouvions le styliser avec CSS. Mais idéalement, nous voulons utiliser une sorte de pré-processeur CSS comme les lasts ou les chaussettes. Parce que ceux-ci nous donnent toutes sortes de belles extensions à CSS. Donc, pour cet exemple, nous allons utiliser SAS. Si vous ne l'avez pas vu, vous pouvez le consulter sur le site Web. Et il nous fournit plein de choses cool telles que les variables. Alors que si nous voulons définir, disons, une couleur et l'utiliser dans des tas d'endroits différents dans nos feuilles de style, nous pouvons simplement définir les gardiens. Et puis nous pouvons utiliser cette variable. Et si jamais nous voulons la mettre à jour, nous avons juste besoin de la mettre à jour en un seul endroit. Je vais donc mettre un lien vers les stocks SAT dans la section ressources de cette leçon. Mais heureusement, Symphony y a un grand soutien. Nous avons ce qu'on appelle la symphonie sur appel, et nous allons voir comment configurer cela maintenant.
20. Installer un encore encore: Nous allons nous lever et courir. Nous avons des coopératives Symphony. Je vais ouvrir un nouvel onglet terminal ici. On est toujours dans le bon répertoire. Et je vais le faire. Composés qui nécessitent un pack web symphony slash sur faisceau de charbon. Donc, cela réduira certains de ce dont nous avons besoin. Mais l'autre chose dont nous allons avoir besoin est parce que le composant WebPart ne fonctionne pas sur aucune tâche plutôt que PHP. Nous allons également avoir besoin d'installer toutes nos dépendances de nœuds, qui est NPM est comme le compositeur de NodeJS. Donc on va aller de l'avant et faire une installation de NPM ici aussi. Et prendre le relais de ce temps. Npm. Mais les littéraux peuvent être énormes. Ok. Joli. Et c'est fait. Donc, nous regardons le projet maintenant il y a quelques changements ainsi que nos dépendances compositeurs. On a ce paquet. Json, qui est quoi ? Qui est la gestion des dépendances NPM. Il a installé un tas de scripts pour nous, pour notre objectif final. Et il est également de créer ces fichiers de dépendance que nous venons d'installer avec l'installation de NPM.
21. Compiler des actifs: Donc, nous avons des dépendances ici et cela ressemblera beaucoup au compositeur a ce répertoire fournisseur. Nous avons ces modules de soulignement de noeud, c'est là que npm met ses dépendances. Et nous avons aussi ces petites commandes ici. Et pour les renommer, nous pouvons faire npm run dev. Et c'est la commande que nous allons utiliser pour construire des actifs statiques. Donc, en ce qui concerne maintenant les actifs de bonté, où nous avons ce CSS et nous avons ce fichier JS aussi. Et donc c'est l'endroit où nous allons les éditer. Et puis quand j'ai rendu ce créé dans ce fichier de construction, où nous obtenons cette version compressée. C' est la sortie du pack web. Et ce sont les copies qui vont entrer dans notre page Web. Donc, nous les écrivons ici et web pack les compilera dans ce répertoire de construction. Et nous pouvons les inclure à partir de cela.
22. Permettre la SASSE: Donc, nous avons maintenant le pack web prenant notre CSS et JavaScript et le compilant prêt pour notre Inclusion. Mais nous n'avons pas réellement active taxe encore parce que sur appel prend en charge plusieurs préprocesseurs CSS différents, Vous pouvez également utiliser moins et overs. Nous devons donc aller de l'avant et le configurer aussi pour SAS. Donc, nous allons commencer par changer ça. On va renommer ça. Sas utilise SCSS. Donc on va changer ça. Et puis nous allons dans ce app.js et nous allons mettre à jour cette référence ici. Donc, il pointe vers le bon fichier. Et puis nous passerons à ce composant WebPart, dot-com ab.js. Il a été créé lorsque nous avons installé onco. Et par défaut, et nous avons ce SAS préchargé, mais il a commenté. Supprimons donc ce commentaire. Et puis nous avons ceci permet le chargeur Sass là-dedans. Et puis enfin, nous devons installer une autre dépendance en utilisant npm pour le faire traiter. Donc nous allons retourner à notre ligne de commande. Faites npm installer dash, dash enregistrer dev pour installer la dépendance et écrire ce changement dans package.json. Donc, quand nous avons installé des dépendances Composer, les Juifs l'ajoutent automatiquement. Ici, nous devons explicitement dire à npm que nous voulons qu'il se souvienne que nous avons installé cette dépendance et que nous allons avoir besoin d'un chargeur Sass. Et SAS. Ok, super, et c'est installé. Donc maintenant, faisons npm exécuter dev. Juste pour vérifier que tout fonctionne. Super, donc on n'a rien explosé. C' est une bonne nouvelle. Allons de l'avant et amenons les actifs que nous avons créés ici.
23. Y inclure nos ressources: Maintenant que nous avons notre SS compilé dans ce répertoire public de construction, comment pouvons-nous l'intégrer dans notre modèle ? Eh bien, nous avons une jolie petite étiquette qui nous aidera avec ça. Donc, nous ouvrons notre fichier de modèle layout.html, brindille. On peut le faire sur les chars d'entrée de base. Et puis si nous actualisons cette page par affecte bien que l'arrière-plan est devenu gris. Et c'est que c'était le CSS par défaut dans cela. Donc, c'est SaaS, même si nous n'utilisons pas de SAS est alors mis ici où il est compilé. Et puis nous apportons la fin. Donc, si nous regardons HTML, met EUR LAN. Allons aussi rapidement à Google Fonts et apportant une mousse de glace. Ouvrir Sans fera l'affaire. Et nous voulons le régulier et l'audacieux. Je pense. Je vais juste prendre ça. Et je pense que j'ai ouvert envoie installé, mais je veux qu'il fonctionne sur l'ordinateur de tout le monde. Tellement gentil. Donc, nous apportons CSS, nous apportons aussi une police d'ici. Et maintenant, vous ne voulez probablement pas que ça ressemble à ça. Donc, nous pouvons commencer à écrire du CSS.
24. Ajouter des CSS: Transformons cette page assez laide en quelque chose d'un peu plus agréable. Donc d'abord, on va retourner à notre ligne de commande et on va exécuter NPM Run Watch. Ceci est similaire à NPM lorsque dev, mais cela fonctionnera pour toute modification de fichier. Donc, dès que nous faisons un changement dans le fichier, il va se recompiler automatiquement. Donc ici, nous fermons tout cela vers le bas, et ouvrons cette application point CSS. Tout d'abord, je vais créer une variable. Nous avons donc une taille standard suspendue pour toujours. Et là, elle est cette belle police Open Sans. Nous n définirons signes
de police. Débarrassez-vous de toute marge autour de là aussi. Et le style F0 sur les choses que le style de pied laisse cette variable de mise standard. On est partis. Et maintenant que nous avons une certaine différenciation des couleurs, nous pouvons désactiver la ligne horizontale. Et nous ferons une chose similaire avec un en-tête. Encore une fois aussi le sol précédent à la ligne bleue. Et donnez-lui une belle grande taille de police. Et un peu de rembourrage à nouveau, en utilisant la variable de grade. Allez aussi dans la balise principale. Et j'ajouterai un peu de rembourrage. Et alors que nous sauvegardons cela, il recompilera tout. Maintenant, si nous actualisons la page, parfait, vous devrez peut-être faire un rafraîchissement dur car il n'y a pas de casse de cache. Donc, ce contrôle B, pensez changement de contrôle ou peut-être sur Windows. Je suis juste pour effacer l'argent afin que vous n'obtenez pas l'ancienne version et la feuille de style, mais comme vous pouvez le voir, maintenant que nous avons actualisé, nous avons tous nos CSS fonctionnant bien, et cela commence à ressemblent à une page Web respectable.
25. Doctrine ORM: Dans ce module, nous allons examiner les bases de données
et la symphonie en utilisant spécifiquement la doctrine de la RM. Orm signifie mappeur relationnel d'objet. Il s'agit donc de mapper des objets en PHP aux lignes de base de données. Quelqu' un qu'on retire les données. Comment l'obtenir dans un objet PHP bien utilisable et comment le remettre ? Et l'idée d'utiliser un ORM est que l'ORM prend soin de toute cette forêt. Donc, nous pouvons simplement écrire des objets PHP et nous n'avons pas à nous soucier du SQL. ORM les plus populaires en PHP sont doctrine am propel. Et si vous venez d'autres langues, vous avez peut-être entendu parler de choses comme hibernate et Active Record. Tous font la même chose. Vous n'avez pas besoin d'utiliser le vert foncé pour Symphony, mais il est vraiment bien intégré, donc il est lâchement couplé, mais il s'intègre très bien. Et vous obtenez beaucoup de fonctionnalités faciles hors de la boîte. Et la doctrine nous permet d'utiliser à peu près n'importe quelle plate-forme de base de données. Donc, nous pourrions utiliser MySQL, MariaDB, et je vais utiliser MySQL dans cet exemple parce que c'est le plus commun pour apparier avec des applications PHP. Mais vous pouvez également utiliser Postgres, Oracle, SQL Server, SQL mensonge. Et vous n'avez pas vraiment besoin d'apporter beaucoup de changements à cela. Vous dites juste à la doctrine ce que vous voulez utiliser. Vous écrivez vos objets PHP. Et encore une fois, la doctrine s'occupe de tout cela. Alors, comment ça marche ? Comment mapper nos objets PHP à la base de données ? Nous utilisons des classes spéciales que nous allons appeler des entités, mais essentiellement Git des classes PHP régulières avec quelques annotations sur. Et c'est un exemple de quand nous allons écrire
pour un produit et nous utilisons une annotation pour dire, ok, c'est et entité. Ainsi, une entité est analogue à une table dans la base de données. On a une classe de produits. Et puis nous allons avoir des instances de cette classe. Et c'est comme dire que nous avons une table de produits dans la base de données et qu'il y aura des lignes à l'intérieur de cette table. Et puis chacune des colonnes que nous utilisons des annotations pour mapper également. Donc, par exemple, nous pourrions avoir une propriété id et un getters et setters punchy sur la classe. Et nous allons marquer cela en utilisant des annotations pour dire, ok, c'est la colonne ID dans
cette table, et c'est ainsi que la doctrine sait comment la mapper.
26. Configuration de base de données locale: Dans ce module, nous allons configurer la base de données. Doctrine prend en charge un tas de plate-forme afin que vous puissiez techniquement utiliser n'importe qui que vous voulez. Si vous avez MySQL et PHP, mon administrateur installé localement, alors génial, cette leçon est pour vous. Tout ce qu'on veut faire, c'est créer une base de données. Donc je suis des jets en PHP, mon administrateur ici. Je vais créer une base de données appelée Byte Shop. Et puis je vais aller à l'onglet « Privilèges ». Et quand je monte au sommet, parce que je veux créer un nouvel utilisateur. Allons obtenir un compte d'utilisateur et grit Nuan, tir combiné
criminel de l'hôte local. Je vais laisser le pitch d'une demi-minute, générer le mot de passe. Et surtout, nous allons avoir besoin d'utiliser vue d'authentification MySQL
native sur certaines des nouvelles innovations d'un PDR, vous n'avez peut-être pas besoin, mais c'est juste un problème de longue durée avec PHP que vous devez utiliser MySQL natif authentification ou devoirs. Donc c'est juste Slashdot quelque part en sécurité. Et j'aurais pu créer le compte d'utilisateur d'abord. Battez-vous pour vous demander ce qui se passe si je prends mat. Ok, donc ça laisse aller. Ok, maintenant, donc nous avons créé cet utilisateur de magasin de vélos, et nous avons également créé cette base de données de magasin de vélos. C' est comme ça qu'on va le faire. Si vous avez MySQL et PHP, mon administrateur est installé localement. Sinon, je vais vous montrer comment nous pouvons le faire sur Amazon sans que vous ayez à l'installer localement. Dans la leçon suivante.
27. Configurer des AWS en alternance: Si vous n'avez pas MySQL tel que localement et que vous pensez, Chris, je ne veux vraiment pas faire ça. C' est beaucoup d'efforts. Mon ordinateur n'a pas autant de mémoire. La bonne nouvelle est que vous pouvez également obtenir services Web
Amazon pour héberger votre base de données pour vous. Donc, si vous êtes déjà configuré avec Amazon Web Services, vous pouvez probablement utiliser ce niveau gratuit pour suivre ce cours. Et la façon de le faire est de se connecter à la console, console.log AWS sur amazon.com. Et il vous pouvez accéder à tous les services Web d'Amazon comme EC2 et S3 et tout ce que nous voulons aujourd'hui, nous ne serons pas RDS jour relationnel par service. Et cela vous donnera essentiellement une base de données MySQL dans le cloud. Et c'est quand deux configurations différentes, cette Amazon d'aura est très bien parce que c'est compatible avec MySQL. Donc, nous cliquons sur créer la base de données et nous allons, même maintenant, il y a une option pour MySQL. Mariadb serait bien aussi. Nous allons utiliser Amazon Aurora parce que c'est le cas, et nous pouvons voir ici que c'est compatible avec MySQL. Nous pouvons sélectionner la version scanf, quelque chose d'un peu plus moderne. Celle-là. Et ça va être un test Devin1. Ce classificateur TV va bien. Utilisons le même mot de passe ici. Évidemment, je vais supprimer seulement ces informations d'identification. Après que j'ai fini de filmer ce cours. Toutes ces options sont très bien. Allons de l'avant et cliquez sur créer une base de données. Et cela prend un peu de temps à Amazon pour faire quoi que ce soit dans le cloud. Donc ça prendra peut-être 510 minutes pour mettre ça en place. Mais si nous allons à cette vue informations d'identification ici, alors nous pouvons voir que nous avons l'administrateur et le mot de passe. Et une fois cela, nous serons en mesure de se connecter à la base de données ainsi. Donc, ce sont les informations d'identification dont vous avez besoin si vous allez y accéder de cette façon,
évidemment, n'aura pas PHP mon administrateur. Vous pouvez configurer PHP mon administrateur pour le faire. Mais ce que vous êtes plus susceptible de faire est d'utiliser des logiciels comme j'ai SQL interdire un Mac. Mais aussi Heidi est vraiment bon. Si vous êtes sous Windows. Et vous serez en mesure de créer une nouvelle connexion ici. Et tu mettras toutes les informations d'identification que tu obtiendras des cheveux. Génial, maintenant, il est chargé. On a aussi un ha, administrateur. Nous avons un nom d'utilisateur, un mot de passe, et nous avons également l'emplacement auquel nous devons nous connecter. Donc, ce sont les informations d'identification que vous devrez mettre lors connexion en utilisant une sorte de client SQL, comme SQL bro
28. Configurer la base de données: Maintenant que nous avons créé une base de données sur MySQL et quelle que soit la plateforme que vous utilisez, nous devons configurer notre application symphonique pour pouvoir vous y connecter. Donc, nous retournons à notre terminal, va juste annuler et nous devons commencer à installer des trucs. Les lattes font composer qui nécessitent un pack ORM symphonique. Et cela apportera les bibliothèques dont nous avons besoin pour utiliser la doctrine ORM. Alors donne-lui juste une minute pour tourner dessus. Ok, gentil. Et puis nous aussi pour nous aider à faire une partie du bâtiment, nous allons faire besoin mais dash, tiret, tiret, parce que ce sera une dépendance de dev que nous allons l'utiliser lors du développement local, mais nous n'allons pas avoir besoin pour la production. Nous allons avoir besoin de la symphonie peut venir ensemble. Ok, maintenant, donc nous avons toutes les dépendances dont nous avons besoin. Maintenant. Nous devons également configurer cela dans le fichier a.m. Nous avons donc cette URL de base de données ici. Donc nous appelons l'utilisation du magasin de vélos et nous avons un mot de passe ici. Et changeons ceci en localhost. Et D b est aussi appelé magasin d'achat. Et l'autre chose que nous devons faire est de passer dans la version de MySQL en cours d'exécution si nous nous connectons à un MySQL. Je pense que je cours une version assez légère 8. Ok, maintenant, donc nous avons installé nos dépendances et nous avons mis à jour notre URL de base de données avec le chemin correct.
29. Créer une entité de produit: Maintenant, nous avons configuré notre base de données, il est temps de faire notre première entité. Et une entité représente une table de base de données. Et on pourrait tout écrire à partir de zéro. Mais il est souvent plus facile d'utiliser les outils intégrés que nous obtenons. Nous avons la doctrine et la symphonie. Donc on va à la console de Petri Ben. Lorsque vous faites une entité deux-points. Et je vais lui donner un nom. Dans ce cas, nous allons l'appeler produit. Et cela nous mènera à travers une série de questions sur ce à quoi nous voulons que l'entité ressemble. Nous devons donc organiser des propriétés, par
exemple, un nom. Et ça va être une ficelle. Ok, gentil. Et le prix assis va
être être un
côté décimal , une image qui dans ce cas va aussi être une chaîne. Il peut simplement pointer vers un nom de fichier. Disons que celui-ci peut être nullable. Et on va avoir une description. Ça va être un texto. Ensuite, on peut aussi être nullable. Ok, gentil, et c'est fait. Allons voir ce qui a été créé. Donc nous avons maintenant ça à l'intérieur de la source. Nous appellerons ce dossier d'entité. Et nous avons ce produit. Donc, c'est n'importe quel espace de noms d'entité. Et il y a toutes les propriétés que nous avons créées,
le nom, le prix, la description de l'image. Il a également des getters et setters générés pour toutes ces méthodes. Et nous avons également sa propriété ID qui est automatiquement ajoutée pour nous. Et puis nous avons également ce référentiel de produits que nous allons utiliser pour rechercher dans la table également. C' est tout ce qu'on avait à faire, c'était de répondre à ces questions. Et tout ce code a été généré pour nous.
30. Générer le schéma: Nous avons notre classe d'entités de produit ici avec notre base de données elle-même est toujours vide. Maintenant, nous pouvons créer manuellement les tables. Mais parce que nous avons déjà défini ce à quoi nous voulons que notre entité produit ressemble. On n'a pas besoin de faire ça. Nous pouvons obtenir la doctrine pour le faire pour nous. Et nous le faisons par là dans PHP été console faire migration deux-points. Et cela aurait dû créer un fichier de migration. Donc, si nous regardons maintenant, l'intérieur sont retournés à nous le répertoire des migrations. Et cela nous donne un moyen de mettre à niveau et de rétrograder la base de données par programme. Et il a sa propre méthode où il crée cette table et une méthode down pour s'en débarrasser. Et ensuite, on pourra faire ça. Nous pourrions automatiser cela dans le cadre de notre processus de construction. Mais ici, nous allons juste l'exécuter manuellement. Alors revenons en arrière. Et maintenant que nous sommes satisfaits du SQL qui est généré lors de l'exécution des migrations de deux-points, la migration des deux-points. Et cela va exécuter le script de migration. Et maintenant, si nous revenons à notre base de données, parfait, nous avons notre table de produits. Si nous regardons la structure, elle correspond à la structure de l'entité. Donc nous avons maintenant, nous venons d'écrire le code PHP et tout le SQL a été pris en charge pour nous en utilisant des doctrines, des outils.
31. Importer des données d'échantillon: Maintenant que nous avons une base de données ou de l'exécution de ce jus Bev admin aujourd'hui. Donc, si on va dans la table des produits, c'est vide. Et être gentil si nous avions quelques exemples là-dedans. Donc je vous les ai fournis. Donc, si nous échantillonnons du code SQL, nous pouvons fonctionner correctement. Nous allons juste le creuser et rester dans le SQL ici. Donc, j'espère que vous avez téléchargé l'exemple de code. Et je l'ai ici. Je vais juste ouvrir ça. Si vous allez dans l'exemple de code que vous pouvez obtenir de GitHub et que vous allez dans ce fichier de ressources. C' est cet exemple de produits, le SQL pour copier et coller cela dans et peut le faire en PHP, mon administrateur. Ou si vous utilisez la base de données Amazon, vous pouvez utiliser SQL pro ou Heidi aura le client SQL que vous avez configuré et juste exécuter SQL. Et puis vous obtiendrez tous ces exemples. Voici quelques autres choses que nous voulons copier de l'exemple de code dans notre projet en public. Apportons toutes ces images. Et aussi dans les actifs et CSS a permis de l'air CSS agréable. Encore une fois, copions ça. Et si vous revenez à votre projet, alors trouvez tous Moins CSS. Et mettons-les à jour. Donc, nous allons dire npm exécuter dev juste pour reconstruire le CSS que nous avons. Donc, à la fin de cela devrait avoir quelques exemples de produits dans votre base de données. Vous devriez avoir des CSS mis à jour. Et tu devrais avoir un tas d'images ici aussi. Et ça va aider Git à accélérer les choses au fur et à mesure que nous traversons le projet.
32. Éditer les produits: Maintenant que nous avons tout configuré, allons de l'avant et créer un contrôleur et rendre certains de ces objets de base de données. Donc on l'a fait, alors on va entrer et juste le copier au prix. Prenons un contrôleur de bienvenue. Et nous appellerons ce produit Control-A. Et nous allons vouloir apporter ce dépôt qui était génial pour nous. Nous allons renommer ceci en pages d'accueil du contrôleur de produits. Très bien. Faisons de cela le préjudice réel promis à la racine sera juste une barre oblique. Et puis nous allons utiliser le câblage magique et la symphonie, disons, apporter le dépôt et l'appeler repo. Donc, cela signifie que lorsque Symphony appelle cette méthode, il va injecter automatiquement le dépôt Paul, qui est la chose utilisée pour rechercher la base de données. Et puis ici, nous allons obtenir une liste de budget de vélos disant repo, Trouver par. C' est une méthode où nous pourrions mettre des colonnes ici. Donc nous pourrions faire le nom égal vélo x. mais dans ce cas, nous allons juste trouver tout. Donc on va juste le laisser comme ça. Et puis nous allons lui dire de rendre une page d'accueil. Et nous passerons dans notre liste de vélos. Ok, tout ça a l'air bon pour le contrôleur des produits. Maintenant, c'est aller Créer un modèle dans la leçon suivante.
33. Modèle de liste de produit: Maintenant, si nous
créons notre contrôleur, créons également un modèle. Donc, je vais juste copier et coller. Bienvenue. Et nous appellerons cette page d'accueil HTML la brindille. Ils ont été le répertoire du modèle. Et nous allons étendre la mise en page comme avant. On va changer ce code. Nous avons copié dans un joli CSS, et nous allons l'utiliser ici. Et nous utilisons une logique de brindille. Donc on va dire pour le vélo, dans les vélos, OK. Et fermez la div. Et puis il va créer une boucle ici. Dis si l'image du vélo. Et nous finirons par acheminer ceci vers une page produit. Alors disons quelque chose comme ça. Et c'est comme ça que le nom de l'
octet, et ce sera aussi un lien. Et enfin, nous allons mettre le prix. On y va. Cool. Jetons un coup d'oeil à ce que nous faisons ici. Est-ce que nous sommes en boucle à travers manger aux vélos. Et nous disons que si elle a une image, affichez l'image. Sinon, il suffit d'afficher le nom et le prix. Ok, donc si nous vérifions que notre serveur de développement fonctionne toujours, on dirait qu'il est redémarré juste pour s'assurer que nous avons toutes les dépendances de lumières dans. Et puis si nous obtenons juste une barre oblique, ne
pouvons pas trouver notre référentiel de produits, je pense que j'ai un espace de noms mal là. Donc ça va être l'entité d'application pour les adversaires de l'arbre. Vérifions ici. Pourtant. Ce n'est pas un dépôt. Dépannons moins dans la leçon suivante.
34. Visualiser notre liste de produits: Ok, si simple problème ici, puisque je suis un S supplémentaire là-dedans. Et une fois que nous avons réparé ça, ça marche bien. Super. Nous prenons donc tous les enregistrements de la base de données, ce que nous faisons en utilisant ce référentiel de produits, en
passant dans le modèle. Et le modèle est alors en boucle à travers eux et les affiche tous. Là. Nous avons notre connexion à la base de données et fonctionnons et récupérons des données.
35. Options de routage: Symphony nous offre un tas d'options quand nous définissons les racines. Donc, jusqu'à présent, nous venons de définir une route statique. Wove vient de dire, c'est notre façon. Nous voulons qu'il corresponde à la méthode que nous avons annotée. Mais nous pouvons également utiliser des variables. Ayant ce deuxième exemple, nous avons cette idée de slug pour dire, un billet de blog. Chaque billet de blog va avoir son propre site slogan pour y accéder,
nous devrons y arriver. Nous pouvons également limiter les méthodes que les gens ont utilisées pour l'appeler. Donc, des choses comme get, post, put, delete, on peut dire, OK, nous voulons que ces racines cartographient ici seulement si c'est l'une de ces méthodes par défaut, s'ils acceptent les moines pour eux. Mais nous pouvons limiter ça si nous le voulons. Nous pouvons donner l'itinéraire et le nom, ce qui est utile si nous faisons des choses comme des redirections. Et nous voulons rediriger vers un itinéraire spécifique. Nous pouvons lui donner un nom, et nous pouvons également ajouter des filtres aux paramètres. Donc, par exemple, dans le troisième exemple, si ID est censé être seulement un nombre, et nous ne voulons pas que l'itinéraire corresponde s'il y a des caractères et cela, et les caractères alphabétiques, alors nous pourrions ajouter des exigences et pour dire, d'accord, cela doit correspondre à cette expression régulière. Donc, les symphonies, les annotations de routage, même si nous n'avons vraiment utilisé que des annotations de base jusqu'à présent, ont un tas d'autres options. Et nous allons entrer dans certains de ces paramètres dans ce module.
36. Page des produits: Nous avons créé une liste, mais nous voulons être en mesure de cliquer sur ces derniers et d'afficher les détails. Alors allons-y et prenons soin de ça. Nous allons donc créer une nouvelle méthode à l'intérieur de notre contrôleur de produits. Et commençons par définir la racine. Il va y avoir des produits de slash. Et puis on aura la carte d'identité. Et nous allons mettre l'identification et les accolades pour laisser la symphonie maintenant c'est variable. Et puis nous définirons les méthodes. Parce que nous avons ajouté une variable ici, nous pouvons prendre ID comme une variable dans la méthode. Et on va aussi vouloir un tas d'autres trucs. Donc, on va prendre une demande. Et nous allons à nouveau vouloir notre référentiel de produits. Et nous allons retourner une réponse. Si je, nous allons nous débarrasser de cette demande pour l'instant. Et je pense qu'on va l'utiliser ici. Et la première chose que nous devons faire est de trouver le bon vélo. Et nous pouvons le faire simplement en utilisant la méthode find qui nous permet de passer une clé primaire. Et dans ce cas, nous avons la carte d'identité, donc nous pouvons le faire. Et puis tout ce que nous allons faire est de rendre une classe de template. On va passer dans le vélo. Donc, ce devrait être tout ce dont nous avons besoin au départ pour cela. Allons de l'avant et créons un modèle pour cela dans la leçon suivante.
37. Modèle de produit: Créons un modèle. Donc, nous pouvons probablement utiliser la page d'accueil comme base. Nous allons l'appeler détails en HTML brindille. Et mettre un peu de pain monte. Donc, cet utilisateur pour naviguer facilement vers la page d'accueil. Et puis ce sera les détails du produit. Un joli CSS pré-construit. On ne va pas fouiller les vélos parce qu'on n'a qu'un seul vélo. Et ici, prenons l'image du vélo. Et puis le deuxième div, et mettre un nom d'octet dans H1 et mettre le prix en dessous. Et ça frappe Good Town ici. Dites si un vélo a une description. Ok, ça a l'air bien. Donc maintenant, si on va ici et qu'on clique sur un vélo, parfait, donc on a une petite miette de pain, on a notre image, on met le nom et le prix. Et nous avons la description qui se lit en bas aussi.
38. Gérer des erreurs non trouvées: Cela fonctionne bien pour aller à partir de la page d'accueil et cliquer sur par détails que se passe-t-il si cet ID était incorrect ? C' était pour un vélo inexistant. Puisse-nous enlever un vélo et il y avait encore un vieux lien. Eh bien, je dirais que Condie va mal et qu'on a 500 ans parce que la moto est nulle, mais on essaie toujours d'accéder à l'image. Donc, ajoutons un peu de manipulation pour vérifier cela. Alors allons dans une page de détails. Et là, je dirai que si le vélo est non, désolé. Et c'est ce que nous obtenons de la bonne méthode. S' il ne trouve pas l'idéal, faites-nous savoir. Ensuite, nous pouvons utiliser d'autres symphonies, de belles méthodes d'aide. Juste pour dire que cet octet n'existe pas. Donc, pour toujours. Et si on y retourne, d'accord, c'est bien. Donc, il ressemble un peu le même parce que c'est toujours une page d'erreur, mais nous obtenons maintenant une ligne a pour quatre plutôt qu'une erreur 500. Donc le serveur n'explose pas. C' est un domaine que nous nous attendons à arriver et nous pouvons rendre cette page un peu plus jolie pour l'utilisateur.
39. Personner la page d'erreur: Si l'utilisateur obtient une ère quatre ou quatre, que nous voulons qu'il soit un peu plus beau que cela correspond idéalement à notre design. Et on peut facilement le faire. Alors prenons, nous allons juste prendre une page d'accueil à nouveau et ferons. Mais si l'air de personnalisation, donc nous allons toujours apporter dans la mise en page. Mais débarrassons-nous de ce vieux contenu. Je dirai que la page n'a pas été trouvée. Et puis nous dirons quelqu'un comme, désolé, la page que vous cherchez n'existe pas. Et nous leur donnons un lien vers la page d'accueil. Maintenant, la façon dont nous faisons fonctionner cela est super simple dans AIG, mais un peu difficile. Nous devons donc appeler spécifiquement l'erreur pour ou pour la brindille de points HTML et à l'intérieur du répertoire templates lorsque deux crédits ne sont pas des faisceaux de filet. Et puis à l'intérieur des Bundles, on va créer une brindille 10. Et à l'intérieur de cela, nous allons avoir besoin de créer une exception appelée. Et puis on va enfin le sauver. Donc, il modèles assez spécifiques, bundles, brindille bundle, erreur d'exception pour quatre. Et ce n'est pas un peu d'espacement et ça aussi,
ok, ça a l'air bien. Maintenant, parce que nous exécutons le serveur de développement, nous n'obtiendrons pas réellement la page d'erreur ici continuera à obtenir le truc de débogage symphonique. Mais si nous voulons tester à quoi ressemble notre page, nous pouvons le faire en allant souligner ère, puis mettre le code d'erreur dans ce cas quatre ou quatre. Et ceci ici, nous pouvons voir que nous avons notre page introuvable erreur, et c'est ce que l'utilisateur dira en production. Donc, en développement, nous obtenons la symphonie complète jamais piles que nous pouvons déboguer la production blâme. L' utilisateur verrait cette belle page d'erreur que nous venons de créer.
40. Ajouter au panier: Dans ce module, nous allons nous occuper de la fonctionnalité anti-panier. Nous allons donc avoir besoin d'une sorte de bouton d'ajout au panier qui permet aux utilisateurs d'ajouter des vélos pour se coucher panier comme n'importe quelle plateforme de commerce électronique. Et on va devoir persister ce panier de plusieurs pages. Donc, une fois qu'ils ont ajouté, il ne disparaît pas sur la page suivante. Et heureusement, symphony mx est vraiment facile à faire en enveloppant la fonctionnalité de session PHP dans quelques belles fonctions faciles à utiliser.
41. Ajouter au panier en panier: Aller au modèle de détails ici. Allons-y et ajoutez-y ce bouton Panier. Donc, si nous ouvrons le modèle de détails et sous le prix, nous allons juste à la forme de merde. Et puis n hat, nous allons utiliser une variable que nous n'avons pas encore créée. Et nous dirons f dans le panier. S' il est déjà dans le panier et que nous ne voulons pas que les États-Unis construisent pour ajouter à nouveau. Donc, nous allons faire un bouton désactivé et nous leur donnons quelques commentaires. It's Odeon say ajouté au panier. Et sinon, alors nous allons créer un bouton jusqu'à ce que le panier. Et on va faire les sourds. Et nous avons déjà fermé notre mousse. Super. Donc si on se rafraîchit maintenant, il va se plaindre que le panier n'existe pas. Alors allons créer ça. Et je veux faux pour l'instant. Parfait. Donc nous avons maintenant ce bouton. Il ne fait rien, mais le bouton lui-même est que nous allons le brancher dans la prochaine leçon.
42. Configurer le service de session: La configuration de la session va être agréable et facile car la gestion de session est accompagnée d'une symphonie. Même sur une installation de base, il y a une configuration que nous pouvons regarder. Donc, si nous allons dans la config, puis dans les paquets, nous allons à ce framework. Hey, nous avons un tas d'options pour la session afin de changer la gestion de la session si nous le voulions. Mais dans ce cas, tout ce que la symphonie nous donne par défaut va bien. Donc, nous pouvons laisser ce framework dot yaml tel quel, et nous sommes prêts à partir. On peut juste utiliser la session hors de la boîte. Nous n'avons pas besoin d'installer les paquets.
43. Traire des données de demande: Maintenant que nous savons que nous pouvons utiliser un service de session et que nous avons un modèle. Nous pouvons entrer et câblé dans le contrôleur de produits. Et quelques choses, nous aurons
seulement besoin de l'objet requête car l'un était l'objet de réponse pour ma Fondation HTTP. Et peut aussi avoir besoin d'apporter dans notre session. Encore une fois, c'est aussi un paquet de fondation HTP et la section I fait l'interface de session. Donc on a eu iOS. Donc nous pouvons maintenant les utiliser ici. Et encore une fois, nous avons des symphonies, magie où je sonne. Nous obtenons la symphonie des serviettes ce que nous voulons. Et il prendra soin de le câbler en fait pour nous. Donc, nous n'avons pas à passer explicitement aucun de ces n. Nous disons juste que la requête et l'interface de session et la symphonie et nous allons nous occuper du reste. Ok, alors maintenant ajoutons un peu de manipulation pour ce code. La première chose est que nous allons obtenir le panier. Et le deuxième paramètre que nous appelons sur le gatt est la valeur par défaut. Donc s'il n'y a pas de panier dans la session, on l'a fait, ça va avoir un tableau vide. Et puis nous allons dire, cette demande
est une demande de poste plutôt qu'une requête GET ? Si c'est le cas, nous savons que nous avons cliqué sur le bouton anthro Basket et sur l'EFSA. Et on va ajouter le vélo. Et puis une dernière chose est, et nous devons mettre à jour ceci dans la variable panier. Et on entrera effrayés et je parlerai pour ça. Ok, donc on va prendre le scarabée, la séance. Et si ce n'est pas le cas, alors j'aurai juste un tableau vide, ce qui est bien, c'est un panier vide. Et puis nous disons que s'il s'agit d'une demande de poste, les utilisateurs cliquent sur le bouton. Alors ce qu'on veut faire, c'est ajouter le vélo au panier. Nous allons utiliser l'ID comme K dans un tableau associatif et ensuite enregistrer l'octet dans cela. Ensuite, nous allons écrire le panier mis à jour à la session. Et puis en bas, on va dire, d'accord, fouiller le panier avec ce vélo. Et si c'est A1, alors les vélos déjà dans le panier afin que nous puissions afficher le bouton over. Donc, actualisons simplement cette page et sur le panier. Et boum, il est là. Nous sommes maintenant vraiment ajoutés au bouton Panier car il est ajouté. Et comme nous rechargeons la page, il regarde dans la session, trouve que le vélo est déjà là. Et nous allons juste rafraîchir pour nous assurer que rester autour, c'est parfait.
44. Contrôleur de panier: Nous devons ajouter à la fonctionnalité de panier de travail. Donc la prochaine chose que nous voulons est de pouvoir réellement voir un panier. Nuage quelqu'un est en panne. Et je vais copier et coller. Les produits peuvent essayer beaucoup. Et on appellera ce contrôleur de panier. Cela le renommera également. Et puis nous allons appeler ce panier et nous allons définir une racine pour couper le panier. Je ne sais pas comment ça va. Joli. Et puis nous allons juste nous débarrasser de tout ce code aussi. La première chose qu'on va faire, c'est la même chose qu'on a fait avant si on a juste un panier. Et c'est que le panier est vide, sera par défaut un tableau vide. Et ajoutons également la possibilité de supprimer des choses du panier. Donc psi est la méthode. Nous allons obtenir l'ID et cela aura plus de sens lorsque nous ferons le modèle. Donc, si un utilisateur veut supprimer quelque chose du panier, nous allons poster l'ID et nous aurons l'idée,
hey, retirez-le du tableau de panier. Ensuite, nous allons écrire ce panier à la session avec l'élément supprimé. Et la prochaine chose que nous voulons faire, c'est que nous voulons fournir une sorte de total. Donc, itérons à travers le panier et retirons chaque prix. Donc, nous allons cartographier à travers le panier. Je savais que je suis allé et assis ici et ils enfreignent un prix. Et une fois que nous avons tous les prix, il suffit de les additionner. Et ça nous donnera un titre. Et puis on va tout rendre. Si bien. Modèle appelé panier point HTML look brindille qui va créer plus tard. Et je vais passer quelques choses. Et donc nous allons passer le panier afin que nous
puissions parcourir tout ce qui est dedans. Et on va geler le total que nous avons calculé aussi. Ok, ça a l'air sympa. Créons le modèle dans la leçon suivante.
45. Modèle de panier: Maintenant que nous avons un contrôleur de panier, allons de l'avant et créons un modèle. Donc, je vais juste saisir des détails point HTML à brindille, enregistrer, c'est panier Dykstra montants à brindille dans le répertoire des templates. Nous utilisons la chapelure, tout le reste peut aller. Je vais l'appeler Basket Div avec la classe de panier. Encore une fois, nous avons déjà un joli CSS dans. Et la première chose, c'est que nous allons parcourir tous les vélos. Et on va utiliser un petit filtre en brindille. Appelez donc la méthode de format numérique. Et cela ajoutera automatiquement une virgule, je suis décimale et le rendra agréable. Et nous allons aussi l'ajouter dans cette capacité pour enlever un ventilateur. Donc ici, je vais ajouter un bouton qui dit Supprimer. Et nous allons ajouter un caché par KID. Oui. Donc maintenant former un bouton de suppression, envoie un ID de vélo de sorte que dans l'endroit où nous saisissons l'ID, le
retirer de la matrice. On a ça. Joli. Et hé, on va ajouter une dernière rangée. Je vais juste dire titre. Et encore une fois, nous allons appeler cette petite méthode d'aide sur le format de numéro de brindille. Cela fonctionne comme le format de numéro de base de pitch. C' est presque certainement la même fonction sous-jacente. Ok, et ça a l'air sympa. Et la dernière chose qui est hors bouton est de vérifier. Évidemment, ça ne fera rien parce qu'on n'a pas construit de caisse, mais on l'utilisera plus tard. Ok, donc ce modèle me semble bon. Essayons à nouveau un panier barre oblique. Et on y va. On a notre vélo. Retournons à la page d'accueil. Et c'est plus de vélos. Et on ne le ramènera jamais au panier. Ohms, si je pouvais épeler le panier, c'est ça. Et puis nous passons par les trois de nos vélos bien formatés pour utiliser le signe du dollar plutôt qu'un sauna de la livre. Skype. Réparez ça. Ok, gentil. Et nous pouvons également appuyer sur ce bouton Supprimer et il disparaît du panier. Ok, adorable. Donc la seule chose qui nous manque, c'est cette nouvelle façon d'aller au panier. Alors réparons ça dans la prochaine leçon.
46. Afficher le lien de panier: Ajoutons un lien pour que nous puissions accéder au panier à partir d'un que nous sommes sur la page d'accueil. Donc, nous allons aller dans le laboratoire de mise en page, a brindille et nous allons dire f session, ce qui nous donnera accès à l'objet de session de l'intérieur brindille et sa variable d'application a des charges sur Stefan utile. Donc, si vous avez besoin d'avoir accès à une variable que vous sorte d'une variable globale qu'elle est tout au long de l'application. Vous pouvez souvent trouver l'application sur. Et on va dire « chercher le panier ». Et puis faites un endif. Et puis nous allons créer un lien vers le panier barre oblique. Et nous allons juste l'appeler panier v. Actualisez la page. Et maintenant, nous avons ce joli gros bouton V Basket qui nous emmène à la page du panier. Parfait.
47. Installer le paquet de formulaire: Ce que le panier fonctionne, mais maintenant nous avons besoin de la page supprimée. Et pour ce faire, nous pourrions utiliser manuellement écrire un formulaire. Mais cela ressemble à beaucoup d'efforts quand nous pouvons avoir Symphony permettre encore le levage lourd pour nous et nous pouvons le faire avec la forme symphonique. Alors allons de l'avant et faire le plaisir exige la forme de tableau de bord symphonique. Nous allons laisser cela tourner un instant et, et cela fera baisser la bibliothèque de formulaires que nous allons utiliser. Et puis nous pouvons commencer à créer le code PHP lui-même.
48. Créer une entité d'ordre: La première chose dont nous allons avoir besoin est une sorte d'entité d' ordre que nous pouvons conserver la base de données pour en faire un enregistrement. Et nous pourrions utiliser à nouveau l'utilitaire make, mais pourquoi ne pas avoir une expérience pratique en créant une entité. Et nous allons commencer de manière paresseuse en copiant et collant le point de produit PHP dans PHP plus ancien point. Et on va s'en débarrasser. Mais nous allons apporter un outil inévitable de drain dopé est la collection de tableau. Donc, je ne vais pas impliquer ce point avec une classe de référentiel, mais nous allons devoir se moquer d'une entité et nous allons lui donner un nom de table parce que si nous l'appelons plus ancienne que la table de base de données serait appelée ordre. Et bien sûr, l'ordre est un mot réservé en SQL. Et donc chaque fois que nous essayons d'exécuter une requête, MySQL nous donnerait une erreur en disant, ne comprenez pas ce qui se passe ici. C' est un mot réservé. Nous pouvons donc utiliser cette annotation pour dire que c'est les scripts de migration pour l'appeler des ordres plutôt que de l'ordre. Voyons ce qu'on a d'autre ici. Nous allons donc avoir besoin de la carte d'identité, bien sûr. Et nous allons aussi vouloir un nom. Et puis on va aussi vouloir une adresse e-mail. Et nous allons aussi vouloir une adresse postale. Je pense que nous tous comme requis, pas besoin de cette image de pixel pour nous débarrasser de ça. Et l'autre chose que nous allons devoir
faire , c'est qu'il va falloir avoir une liste de produits. Et nous allons juste exécuter du code et ensuite nous en parlerons. Nous avons donc cette variable appelée produits et quel type de données est-il ? Par exemple, les attaques de celui-ci. Celui-ci est une ficelle. Eh bien, celui-ci, c'est un produit de type F tend t, C'est un éventail de produits. Nous pouvons donc utiliser cette balise plusieurs-à-plusieurs pour dire la doctrine pour obtenir une relation entre la commande et l'entité du produit. Maintenant, si nous allons faire cela sur des choses que nous devons faire, c'est lui donner une valeur par défaut parce que ce sera un tableau de produits. Donc, nous devons définir par défaut, il veut être une collection de tableau. Et même s'il est vide, alors nous allons toujours avoir toutes ces valeurs. Eh bien, débarrassez-vous de ce prix et de l'image. Mais nous voulons les gars et satisfaire pour l'email. Ensuite, cette description va être adresse. On va mettre en place une fiducie. Et puis la dernière chose que nous devons faire est d'ajouter une donnée pour obtenir la gamme de produits que nous n'avons pas besoin de définir. Ok, gentil. Nous avons donc maintenant notre deuxième extrémité à l'entité Order, dont nous aurons un identifiant, un nom, une adresse e-mail et une adresse. Bonjour à la personne effectuant l'achat. Et une gamme de produits qui ont été l'ADA aussi.
49. Créer la caisse: Maintenant que nous avons une entité plus ancienne, allons de l'avant et créons un contrôleur. Ce sera notre contrôleur de caisse. Donc, je vais juste copier et coller ce contrôleur de panier et nous l'appellerons contrôleur de caisse. Une de ces choses va bien. Nous devrons apporter de nouvelles choses aussi. De l'emballage de formulaire devrait être le type de charbon d'extension. Je vais apporter un tas de ces types fondés pour l'instant sur le textile nécessaire et le type de zone de texte. Et puis nous aurons besoin de quelques paquets locaux aussi. Nous devons donc introduire l'entité Ordre que nous venons de créer. Et le référentiel de produits aussi. Nous utilisons toujours plus bas. Donc, nous allons avoir notre grossièreté une coupure de caisse aussi. Et en fait, cela va faire pour l'instant. On peut encore avoir un panier comme avant. Et on va s'en sortir aussi. Donc, nous allons juste déplacer ce code vers le et nous pouvons aller de l'avant et créer une nouvelle entité de commande afin que C et C nous venons de créer. Et puis nous allons l'utiliser pour créer un formulaire en utilisant la bibliothèque de formulaires symphoniques. Donc nous allons appeler le constructeur de formulaires. Et cela va créer une forme autour des états n. Il va l'utiliser comme base afin qu'
il puisse ajouter de la validation et comprendre ce qui se passe. Et puis nous pouvons ajouter nos échecs à cela. Donc nous allons ajouter un nom. Je vais ajouter une adresse e-mail, l'adresse postale. Et celui-là sera un type de zone de texte. Et puis nous allons ajouter un bouton de sauvegarde. Et nous pouvons donner à cela une étiquette qui dit confirmer l'ordre, appeler, obtenir le formulaire. Et puis, enfin, nous rendons ce chef compte ici dans le panier. Je veux toujours un total. Ok, alors parlons du code que nous avons implémenté ici. Tellement génial fait entité New Order. Et nous l'avons utilisé comme base de notre formulaire. Et puis nous avons dit, OK, créez ces fables de formulaire et nom, email et adresse. Et ce sont les types que nous voulons. Et nous avons ensuite ajouté le bouton Soumettre. Ça s'appelle la sauvegarde ici. Et nous avons donné un label. Et puis une fois que nous aurons ce formulaire prêt, nous allons créer une version HTML de vétérinaire. Tout cela est fourni par Symphonies Form Component et nous allons envoyer
à ce modèle de paiement que nous allons créer dans la prochaine leçon.
50. Modèle de paiement: Et nous avons créé notre caisse avec notre formulaire. Alors allons de l'avant et créons le modèle. Il suffit d'utiliser le panier comme base, mais nous pouvons nous en débarrasser. Il suffit d'enregistrer comme caisse en HTML, brindille. Débarrassons-nous de toute cette carotte ici. Donc, je vais utiliser cette aide de format bas nombre à nouveau ici. Et puis couper la mousse va être super simple. On va appeler l'assistant de formulaire et je vais passer le formulaire. Donc, sur le contrôleur de caisse, nous l'avons appelé formulaire ici. On aurait pu appeler ce formulaire 123. Et puis on a mis la forme 123 ici. Mais comme nous l'avons juste appelé forme, légèrement confuse à appeler la méthode avec la variable de formulaire. Mais c'est en fait tout ce qu'il faut faire. Alors frappons, continuons. Bouton Checkout qui permet de réduire la caisse et de voir ce qui se passe. Nous avons donc une erreur lors du dépannage lors de la prochaine leçon.
51. Tester la caisse: Nous avons une petite chose à éclaircir ici, et c'est ce que nous allons à l'entité. L' espace de noms doit être des collections plutôt que de la collection. Rafraîchissez ça maintenant, ok, parfait. Donc tout cela a été construit par magie par Symphony pour nous. Alors rappelez-vous tout ce qu'on a fait, c'était dans le contrôleur. Nous avons dit, nous voulons créer à partir de ce diverti et ceux-ci ont échoué. Et les symphonies vont de l'avant et créer des étiquettes et les champs, forêts et configuré tout ce que nous échouons, alors nous essayons de le soumettre. Il a déjà obtenu la validation HTML de base sur E et F, nous remplissons quelques valeurs ici et la soumettons. Rien ne va se passer parce que nous n'avons pas encore ajouté de manipulation pour ça. Mais déjà sorti de la boîte, nous avons tout le formulaire HTML construit pour nous. Et couramment à dater le formulaire ou nous devrions faire est d'aller
mettre à jour l'entité dans le contrôleur et tout le HTML,
tous les widgets mettent à jour magiquement la forêt.
52. Traduire l'ordre: Maintenant que nous avons un formulaire créé, ajoutons du traitement pour cela. Et la première étape est vraiment CB facile. Nous pouvons simplement dire demande, une demande de handle. N' a aucun sens une telle préforme, je vais dire demande de poignée de formulaire. Et cela va dire à un formulaire de prendre la demande entrante et de la mapper sur le formulaire. Alors, nous allons juste philosoph à nouveau et montrer ce qui se passe. Maintenant, si je le soumets. Cela sauvera toutes mes valeurs. Joli. Parce que quand la requête arrive, mappe tout ici. Parce que toujours rien ne se passe vraiment parce que nous n'avons pas géré la soumission. Alors ajoutons ça. Donc, disons si soumis et il est seulement le faire si le formulaire est valide aussi. Tout d'abord, nous allons mettre à jour cette entité Order car jusqu'à ce stade, nous avons enregistré toutes les valeurs qu'elle a enregistrées. Ils avaient été enregistrés sous cette forme. Mais ils ne sont pas en fait une entité plus ancienne. Mais si nous appelons ceci obtenir des données et vendre ordre, qui mettra à jour la commande que nous avons ici avec le nom, adresse e-mail, adresse. Et la prochaine chose que nous devons faire est que nous devons ajouter les produits au panier. Donc, nous allons appeler qui get produits qui appelle la collection de tableaux sur la commande. Et je vais te parler. Et alors que se passe-t-il ici ? Eh bien, nous sommes en train de parcourir le panier et d'obtenir chaque produit. Et nous utilisons cet ID de produit pour trouver l'entité dans la base de données ici. Ensuite, nous ajoutons cette entité dans la gamme de produits sur la commande. Donc, si nous avions des vélos gratuits et notre panier, il serait en boucle à travers la jauge du panier ou le GET AID gratuit. Trouver l'entité et ajouter n. Pourrions-nous prendre parce que nous avons stocké le vélo dans une session, pourrions-nous simplement l'ajouter directement sur la collection de tableau saura, parce que si nous faisions
cela, il penserait que c'était une entité distincte. Donc, quand je l'ajoute ici, nous devons aller chercher de la base de données à nouveau. Donc cette doctrine sait que nous ne créons pas de nouveau vélo ici. C' est un vélo existant dans la base de données qui veut être attaché à cette commande. Donc, une fois que nous avons fait ça, nous avons construit toute une entité Order. Et maintenant, nous voulons juste enregistrer ceci dans la base de données. Et la façon dont nous le faisons, c'est que nous devons obtenir le gestionnaire de l'entité, ce que nous pouvons faire avec ça. Et puis on va dire persister, ce qui signifie enregistrer l'audit dans la base de données. Et puis nous avons besoin d'un dernier appel, qui est flush, qui dit à la doctrine de ruiner tout le SQL. Il a été tamponné. Donc, si vous voulez écrire plusieurs entités dans la base de données, vous pouvez appeler persist sur un tas de différentes, et alors aucune d'entre elles ne serait réellement écrite jusqu'à ce que vous appeliez cette méthode flush. Donc, vous devez le faire manuellement pour dire,
OK, maintenant écrire ceci dans la base de données. Et la raison est juste pour l'efficacité à cause de la doctrine des alliés, si vous essayez d'ajouter cinq choses, la doctrine irait à la base de données cinq fois. Et beaucoup plus efficace pour vous de dire la doctrine quand vous voulez qu'il aille et écrire dans la base de données. Donc maintenant que nous avons et que nous sauvegardons cela, nous pouvons retourner un modèle séparé. Et allons de l'avant et créons ce modèle aussi. Donc nous voulons juste une tête super simple dit juste, félicitations ou pas. Donc c'est juste sauver. Cela a un point de confirmation HTML, brindille. Et je vais juste dire quelque chose comme on l'a vu. Épelez mal et retournez en arrière et corrigez ça dans une minute. Oui. Ok, gentil. Maintenant et revenons à cette page. Et que va-t-il se passer quand nous soumettrons ça ? Il va y avoir une ère. Peux-tu deviner pourquoi ? Ok, parfait. Donc, nous avons une erreur ici parce que cette table n'existe pas réellement. Nous créons l'entité que nous n'avons pas créée dans la base de données. Alors allons le faire dans la prochaine leçon.
53. Migrer la table des ordres: Et comme prévu, nous avons eu cette erreur car nous n'avons pas encore créé la table de base de données. Alors allons-y et faisons-le. Comme on l'a fait avant. On va exécuter la console PHP été pointillé. Faites une migration à côté de celle des créateurs. Un second fichier de migration. Ouais, donc il va créer ce sont ces tables de li. Et puis pour exécuter cette doctrine, migrations de
deux-points, les deux-points migrent. Joli. Si nous allons regarder la base de données maintenant, dira que nous avons notre plus ancienne table. Et parce que la doctrine est de gérer la relation entre les commandes et les produits. Nous allons donc assimiler cette table de produits de commande avec un lien entre les deux. Mais nous n'avons pas besoin de nous soucier que la doctrine gère tous les étrangers. Essayons de soumettre notre commande. Pourtant, nous avons notre écran de confirmation si génial. Et voici notre ordre. Alors allez sont plus vieux et dans les produits de l'ordre. On peut voir que c'est lié aux deux vélos que nous avons là aussi. Donc c'est parfait. Juste quelques tâches de nettoyage à faire que nous allons prendre en charge dans la prochaine leçon.
54. C'est de l'en des mains: La dernière chose que nous voulons faire ici est de vider le panier vers le bas parce que même si nous avons soumis l'olga, en fait tout encore dans le panier. Donc, nous pouvons vraiment le faire facilement. Et le contrôleur de caisse une fois que le plus ancien a été soumis. Et nous avons déjà amené la session et ici pour que nous puissions simplement dire le panier de jeu de session. Et nous pourrions juste l'annuler, le rompre aussi juste le mettre sur un tableau vide. Et maintenant, si nous passons à nouveau par le processus de paiement, parfait. Donc la commande a été soumise. Nous avons une nouvelle rangée dans notre base de données de commandes et il a dégagé Dan une session afin que les vélos et plus dans le panier.
55. Les couches de courrier et de transport: Dans ce module, nous allons examiner l'envoi de courriels en symphonie. Mais avant de le faire, je veux juste entrer dans cette idée d' utiliser une couche de transport et être vraiment clair sur ce que c'est. Donc les bibliothèques de transport qui va vraiment envoyer l'email. Donc, si vous pensez au courrier symphonique, un composant qui ressemble à votre client de messagerie. Comme vous pourriez avoir Outlook ou Thunderbird ou un client Web comme G emails, interface
Web, ou peut-être l'application de messagerie sur votre téléphone. Mais cela ne fait pas vraiment l'envoi des e-mails. Vous devez avoir une sorte de compte de messagerie. Et le logiciel interagit simplement avec ce compte de messagerie. Et c'est la même chose avec symphony mailer est que cela va
interagir avec la chose qui est en fait envoyer les emails. Et il y a un tas d'options qu'on peut faire. Nous pouvons simplement utiliser un compte de messagerie standard ou nous pouvons utiliser ce qu'on appelle un service de messagerie transactionnel. Donc, c'est un peu comme une API à laquelle nous nous connectons et disons, accord, envoyé cet e-mail à cette personne. Et ça s'appelle transactionnel parce que vous avez tendance à les envoyer un à la fois par rapport à dire, une liste de diffusion où vous sortiez et dire, ok, je veux envoyer ce courriel à tous ces gens. Transactional tend à s'inscrire un à la fois à l'aide d'une API. Maintenant, en termes d'envoi du courriel à la personne, le courrier électronique n'est pas un système parfait et certains se perdent, certains spams indépendants. Et en général, la raison pour laquelle vous pourriez payer plus pour un service de messagerie électronique transactionnel plutôt que simplement utiliser votre compte de messagerie est que cela pourrait être mieux et éviter le spam. Ou ça pourrait être pire. C' est bon de tester ces choses parce qu'il ne sait jamais vraiment rien dire. Nous avons un tas d'options de couche de transport en symphonie. Il est livré avec, par défaut, il suffit d'obtenir SMTP. Donc, c'est la façon normale que vous configurez un client de messagerie est d'aller à votre compte de messagerie, obtenir les paramètres et il vous donnera un nom d'utilisateur et un mot de passe et probablement un serveur IMAP et SMTP pour se connecter. Et vous pouvez également utiliser Gmail. Gmail légèrement différent, même si c'est juste un compte de messagerie régulier. Il existe une bibliothèque séparée que sept jours fournit si vous voulez utiliser Gmail. Et puis il y a un tas de services de messagerie transactionnels. Donc des choses comme le courrier, les
armes, la grille d'envoi, le cachet de la poste. AWS d'Amazon a ses propres coûts de service de messagerie, simplement le service de messagerie et le chimpanzé masculin. Maintenant, nous avons le chimpanzé mâle, nous parlons spécifiquement de mandrin. Donc vous pourriez avoir un camp de chimpanzés masculin et ces bulletins à votre liste de diffusion. Mais il y a un service de messagerie électronique
transactionnelle supplémentaire appelé mandrill qui coûte de l'argent supplémentaire que vous pouvez ajouter à votre compte également. Donc, ce n'est pas la chose de la liste de courrier régulier chimpanzé, c'est le service de mandrin supplémentaire qu'ils fournissent. Ils sont tous bons. J' aime vraiment nail gun personne ils, mais si vous
voulez aller pour le service de courriel de transaction, alors juste faire un peu de recherche et voir lequel fonctionne pour vous. Ou vous pouvez simplement utiliser un compte de messagerie ordinaire comme nous allons le faire dans cet exemple.
56. Installer le paquet e-mail: Pour envoyer des e-mails, nous devons installer le paquet mailer. Alors allons-y et faisons-le. Nous allons juste faire compositeur exiger une symphonie slash Mila. Nous donnons une minute pour prendre le relais. Je vais faire tomber la bibliothèque du milieu et ensuite nous pouvons
travailler en l'utilisant et la personnaliser et l'implémenter. Ok, parfait. Nous sommes prêts à envoyer des courriels.
57. Configurer le service e-mail: Allons de l'avant et configurez le service de messagerie. Donc on va entrer dans notre dossier et ensuite on a ce courrier, le soleil ici. Et la forme de ceci dépendra de la couche de transport en utilisant, dans ce cas, nous utilisons simplement le serveur SMTP de base. Vous aurez donc besoin de vos détails SMTP discutés, stylisez un module. Ou vous pouvez utiliser un autre service si vous le souhaitez. Et cela prend la forme d'un mot de passe utilisateur. Et puis les détails SMTP et le port. Maintenant, je vais aller de l'avant et les échanger contre mes vrais détails. Mais évidemment, vous voulez mettre vos données personnelles ici à la place.
58. Envoyer un e-mail de confirmation: Maintenant que nous avons configuré le service de messagerie électronique, continuons et mettons à jour le paiement pour l'utiliser. Il va falloir que nous ayons encore plus de cours ici. Dans l'interface de messagerie. Nous allons apporter l'intégration de brindilles aussi parce
que nous voulons qu'elle soit agréable et qu'elle le gabarit. Et puis utilisons le câblage des symphonies pour amener le continent. Et puis nous allons vider le panier juste avant de le faire. Nous allons appeler l'e-mail de confirmation d'envoi. Et je vais passer l'ordre. Et la myéline. Maintenant, nous allons fonctions et nous sommes sur le point de descendre et de le créer. Alors allons faire ça maintenant. C' est une fonction privée parce que nous sommes en train de l'appeler d'ici. Et nous l'appelons envoyer un e-mail de confirmation. Je peux prendre un ordre. Et une interface de courrier. Dis, Nouveau. Commencez à configurer ceci à partir de envoyer à partir de mon domaine. Et on va à deux, et on va utiliser cette fonction une robe. Et nous avons acheté et nous pourrions juste mettre l'adresse e-mail dedans comme une chaîne. Mais ce sera mieux parce que nous pouvons aussi donner le nom. Donc on va sortir l'e-mail. On aura le nom aussi. Sujet. Je dirai une ancienne confirmation. Et je suis parce que nous utilisons un modèle aujourd'hui. Maintenant, nous allons passer cette liste. Envoyer un tel point d'ordre HTML brindille à nouveau n'existe pas. Et puis le contexte passe toujours dans une brindille variables. Donc juste plus vieux là-dedans. Et c'est fait. Et là, je vais dire mon, envoyons cet email. Ok, donc c'est la première partie faite. Nous allons créer le modèle d'e-mail dans la leçon suivante.
59. Modèle d'e-mail: Maintenant, nous avons notre dysfonctionnement de Sandy. Allons de l'avant et créons un modèle. Et cette fois, nous n'allons pas prolonger parce que c'est un e-mail. Sauvegardons ceci comme commandé, notre brindille HTML. Et nous avons placé dans un répertoire et c'était des courriels et une ligne de sésame, merci pour votre commande. Et puis on pourra les énumérer. Down hand dira que nous allons confirmer. La commande a été expédiée. Jose pour l'eau dans tous les produits. Dites par objet dopamine. D' accord. Ça a l'air bien. Assez simple, assez basique. Mais il formera une confirmation de commande avec le numéro de commande et énumérera les produits qu'ils ont achetés. Super, alors testons ça dans la prochaine leçon.
60. Tester la confirmation par e-mail: Nous avons configuré tous les services et environnements pour le courrier électronique. Alors allons de l'avant et testons ça. Tout d'abord, ajoutons quelques vélos à notre panier. On y va. Excellent avec les vélos Godfrey maintenant panier sur un achat qui remplirait mes coordonnées. Et nous confirmerons que les demandes de commande ne sont pas super accrocheuses car elles vont parler au service de messagerie. Ou si vous faisiez cela dans un grand projet commercial, vous le feriez de manière asynchrone, mais j'ai mis un e-mail dans une file d'attente et que quelqu'un s'en occupe plus tard, mais cela fonctionne bien pour l'instant. On a une confirmation. Merci pour Shaphan était et si j'ouvre mes emails, nous maintenant, c'est toute la conformation ou le numéro sept et il a les vélos. Je l'ai levé aussi. Donc Alex, parfait. Maintenant peut être le cas si cet e-mail ne s'affiche pas immédiatement dans votre boîte de réception, vous devez descendre dans votre dossier de spam et jeter un oeil dans leur e-mail. Git a, la plupart des gens sauront, je suppose que vous n'êtes pas très fiable ces jours-ci parce que la protection contre le spam carte, et surtout si vous ne recevez pas cette configuration e-mail vraiment bien et vraiment fournisseur authentique, alors vous peut être pris dans un filtre de spam. Et la façon dont ils sont éviter est juste taquiner dur, fournisseur de messagerie
cher malheureusement. Mais j'espère qu'il devrait être en mesure de trouver cet e-mail quelque part et de voir le mailer travailler.
61. Réflexions finales: Félicitations pour être arrivé à la fin de ce cours. Si vous avez codé le long, vous aurez construit votre premier magasin de commerce électronique symphonique et savez maintenant comment symphonie a fonctionné et j'aimerais que vous partagiez votre code complet avec la classe. Bonne chance et heureux développement.