Transkripte
1. Einführung: Willkommen in dieser Klasse auf Symphony PHP Framework. Es ist großartig, dich hier zu haben. Symphony wird von vielen realen Unternehmen genutzt. So werden Sie sowohl bekommen Erfahrung, die es in Ihren persönlichen Projekten und auch
kommerzielle Erfahrung für Feed gehen dort als
Auftragnehmer oder die Arbeit für ein Software-Unternehmen verwenden kann kommerzielle Erfahrung für Feed gehen dort als . Wir net tun es hands-on wie alle Skill Share-Projekte und bauen gemeinsam einen E-Commerce-Store. Also lasst uns anfangen.
2. Symfony CLI: Die Symphony CLI wird uns eine Reihe von Befehlszeilen-Tools geben wir verwenden können, um eine hilfreiche Sache zu laden. Um das zu erreichen, können wir auf eine Symphonie-Website zugreifen und Sie erhalten Anweisungen für die Plattform, auf der Sie sich befinden. Wenn Sie also auf einem Mac sind, müssen
Sie dies nur in Ihr Terminal kopieren. Dasselbe mit Linux. Wenn Sie unter Windows sind, dann erhalten Sie herunterladbare ausführbare Datei und Sie können diese herunterladen. Und das wird Sie durch den Installationsprozess führen. Wie auch immer Sie es tun, wenn Sie das durchgemacht haben, dann können Sie Ihr Terminal auf Linux oder Mac öffnen. Und Sie können Eingabeaufforderung oder cygwin unter Windows ausführen. Und wenn du nur Symphonie
tippst, lasst uns das zuerst klar machen. Wenn Sie dann einen Befehl nicht gefunden bekommen, werden
Sie wissen, dass es nicht funktioniert. Wenn Sie all diese Informationen mit der Symphony-CLI und allen Befehlen erhalten, die Sie ausführen können, dann wissen Sie, dass es eingerichtet und einsatzbereit ist.
3. Überprüfen deiner Umgebung: Sobald wir die Symphonie-CLI haben, können
wir überprüfen, ob alles andere über die Symphony-CLI eingerichtet ist. Also, wenn wir Symphony tun, und wenn wir dann Doppelpunkt Anforderungen überprüfen, wird
dies überprüfen, ob wir alles, was wir brauchen, in PHP Setup richtig. Und in diesem Fall, gute Nachrichten, das tue ich. Jetzt gibt es hier einige Warnungen, die optionale Empfehlungen sind, und es gibt einige Dinge, die ich ändern könnte, aber Sie müssen diese absolut nicht tun. Solange Sie hier das OK bekommen, können Sie die Warnungen ignorieren. Diese könnten für ein Produktions-Setup nützlich sein, aber im Falle von Git beginnt, also bekommen wir das, okay, es spielt keine Rolle, ob wir ein paar Warnungen von Paaren haben.
4. Symfonie installieren: Jetzt, da wir wissen, dass wir unsere Umgebungen korrekt eingeschaltet haben, lassen Sie uns weitermachen und das Symphony-Projekt installieren. Also, wenn es um die Kommandozeile geht, und ich werde Symphony New eingeben. Und dann geben wir unseren Projektnamen. Jetzt könnten wir Strich machen, Strich fallen. Und das würde Symphony und eine Reihe von Bibliotheken installieren, die wir normalerweise in einer Full-Stack-Webanwendung benötigen würden. Aber in diesem Fall möchte ich die Dinge schlanke Linien halten, die wir nur installieren, was wir brauchen. Wir haben, was wir brauchen und nichts mehr. Und wir können zeigen, dass zusätzliche Bibliotheken auf dem Weg installiert werden. Also werde ich das überspringen. Und ich werde es Projekt Bike Shop nennen. Also nur Symphonie, neuer Fahrradladen. Und dann Symphonie und wir gehen los und fangen an, all das zu erschaffen. Also werden wir ein paar Momente nehmen, um all diese Spin durch IS Symphonie geht und holt alle Abhängigkeiten. Und dann werden wir, okay, großartig, damit wir das in unserem Code-Editor öffnen können. Ich werde Sublime hier benutzen. Aber Sie können verwenden, was Sie wollen. Okay, nett. Also haben wir schon eine Reihe von Akten dort. Wechseln Sie zu diesem öffentlichen Verzeichnis, einem Quellverzeichnis. Damit ich es ignorieren kann. Die Symphonie wird uns sagen, was wir uns nicht verpflichten sollten. Wir haben die, die gesamte Konfiguration für Symphony lebt im S Config-Verzeichnis. Und standardmäßig haben wir bereits ein geladen dieses Zeug. Und wir haben hier auch eine Composer-Datei mit einer Reihe von Abhängigkeiten. Okay, nett.
5. Symfony Server: Jetzt, da wir unsere erste Symphonieanwendung installiert haben, lassen Sie uns fortfahren und ausführen. Also sind wir zurück zum Terminal und wir werden in das Verzeichnis, das Sie gerade erstellt haben, cd. In diesem Fall rief ich meinen Fahrradladen an. Und wir machen Symphonie-Server, Glockenspiel starten. Und das wird Symphonies Entwicklungsserver stoppen. Wir sind einfach so, wie PHP ist eingebauter Webserver, aber spezifisch für Symphony. Und dann, wenn wir zu localhost gehen, 8 Tausend. Perfekt. Wir sagen also nur die Standardseite, die symphony erstellt, wenn Sie eine neue Anwendung erstellen. Offensichtlich werden wir hier unsere eigene Seite erstellen, aber das sieht gut aus. Es ist bereits einsatzbereit und funktioniert.
6. Symfony: In dieser Lektion möchte ich einige der grundlegenden Architektur von Symphony behandeln. Symphony verwendet eine MVC Model-View-Controller-Architektur. Und die Art und Weise, wie wir das tun werden, ist, dass wir einige Klassen
erstellen, die Controller genannt werden. Und in diesen Controllern wird
das eine Reihe von Funktionen haben. Und jede dieser Funktionen wird
eine andere Seite darstellen und einige Dinge ausgeben. Das könnte also eine Vorlage sein oder das könnte ein Haufen Jason sein, oder das könnte ein Haufen roher HTML sein. Sie möchten jedoch ausgeben, diese Funktion wird zurückkehren, sie wird eine URL einer bestimmten Klasse und dieser spezifischen Funktion innerhalb dieser Klasse zuordnen, und dann gibt diese Methode etwas zurück. Wenn wir also die Art und Weise der MVC-Struktur betrachten, haben wir unser Modell,
das unsere Datenbank-Entitäten typischerweise diese in der Quellentität speichern wird. Wir haben dann eine Ansicht, die in der Regel unsere Vorlagen wird in der Regel auf wieder Motor reduzieren. Und wir werden all das genauer behandeln, während wir den Kurs durchlaufen. Und dann haben wir unsere Controller, die unsere PHP-Klassen sind, die die beiden miteinander verbinden. Symphonie ist leicht, locker gekoppelt, so dass es leicht ist, Dinge zu entkoppeln. Was das bedeutet, ist, dass Sie keine Doktrin verwenden müssen, um Ihre Datenbank zu erstellen, und Sie müssen nicht die Zweig-Engine verwenden, um Ihre Templation durchzuführen. Wenn Sie eine tauschen möchten und dazu angetrieben, Ihre Datenbanken oder Smarty zu tun, um Ihre Vorlagen zu tun, können Sie. Aber symphony macht auch die Standardoptionen sehr einfach zu integrieren. Also, wenn Sie nur das Zeug nehmen wollen, das
wirklich gut an der Box funktioniert und Sie nicht herumlaufen
wollen, verschiedene Bibliotheken einzubringen. Die Dinge werden wirklich gut zusammen funktionieren.
7. Erstellen eines Controllers: Jetzt haben wir diese Anwendung in Betrieb genommen. Lassen Sie uns voran und erstellen Sie tatsächlich eine Seite, oder zumindest eine einfache kleine Hallo Welt. Das erste, was wir tun müssen, ist, einen Controller zu erstellen. Und wir haben diesen Controller-Ordner, aber im Moment ist nichts drin. Beginnen wir also mit dem Schreiben eines neuen. Kleben Sie es in den Namespace. Und wir müssen ein Antwortobjekt zurückgeben. Die Symphonie gibt uns eine davon. Und dann erstellen wir unsere Kontrolllasten nennen diesen ersten Kontrollrasen. Ich werde eine Methode erstellen, die Homepage genannt wird. Und es wird eine Antwort zurückgeben. Und im finnischen Antwortobjekt können
wir ihm einfach eine Zeichenfolge mit etwas HTML geben. Ich werde sagen, dieser Schädlingsbekämpfe es, schlug mich. Also, wenn dieses Quell-Controller-Verzeichnis, okay, also haben wir einen größeren Punkt-Controller, haben
wir eine Homepage-Methode erstellt wird, wird die Befragten zurückgeben. Und dann haben wir tatsächlich diese Antwort zurückgegeben, die wir von der Symphonie hier bekommen. Und wir geben nur etwas HTML zurück, das sagt, willkommen. Also das nächste, was wir tun müssen, ist, warum diese Route bis zu Symphony
sagen, wann sie den Benutzer auf diese Seite schicken sollten.
8. Die Route hinzufügen: Um den Pfad zu verdrahten, müssen
wir in das Konfigurationsverzeichnis gehen und diese routes.rb Munition finden. Und jemand ist schon als etwas gegeben, um hier anzufangen. wir also, wir wollen diesen Schrägstrich zuerst. Und das geht zum ersten Controller und wir nennen es die Methoden-Startseite. Also geben wir ihm den Weg. Und ich werde Ihnen einen Controller und den Methodennamen geben, der mit
dem übereinstimmt, was wir hier erstellen. Und jetzt, wenn wir zuerst zum Schrägstrich gehen,
perfekt, haben wir unsere einfache kleine Willkommensbotschaft.
9. Anmerkungen verwenden: Wir haben eine schnelle Route hier und wir definieren dies in routes.js Demo. Aber das Problem damit ist, dass wir jede r2 in diese YAML-Datei hinzufügen müssen. Und in einem großen Projekt, das sehr schnell unhandlich werden würde. Es gibt also einen populäreren Weg, um es zu tun, genannt Anmerkungen. Lassen Sie uns das jetzt zuerst tun, entkommentieren Sie das, was bedeutet, dass dies nicht mehr funktioniert. Was kein Problem ist. Denn statt dessen werden
wir Anmerkungen verwenden. Also müssen wir in der Annotation,
Symphoniekomponente, Routing-Annotation bringen . Und dann werden wir hier nur einen Kommentar hinzufügen, indem wir eine spezielle Annotationssyntax verwenden, sagen wir zuerst root psi Schrägstrich. Ok, reizend. Also müssen wir auch das Annotationspaket einbringen. Also lassen Sie uns das einfach anhalten und wir werden es komponieren, Anmerkungen benötigen. Okay, jetzt starten wir die Symphonie-Tiefe neu. Und dann, wenn wir es jetzt noch mal versuchen, perfekt, zurück. Also verwenden wir nicht mehr in den nächsten routes.js Homologs auskommentiert. Jedes Mal, wenn wir eine Methode erstellen, können
wir diese Zeilenannotation hinzufügen und Symphony mitteilen, was
der URI für diese bestimmte Methode sein soll .
10. Templates: In dieser Lektion werden wir das Konzept des Templatings vorstellen. Wenn wir also Websites erstellen, wollen
wir unsere Logik und sind so konzipiert, dass wir eine separate wie
möglich sein , so dass wir nicht alles miteinander mischen. Und es ist wirklich einfach zu sehen, welche Bits Design, welche Bits Logik. Und wenn wir einen von ihnen bearbeiten wollen, riskieren
wir nicht, das über eins zu brechen. Und standardmäßig kommt die Art der Symphonie mit Zweig. Also müssen wir Zweig als separate Bibliothek installieren. Und Sie müssen nicht Zweig verwenden, Sie könnten es verschiedene Templating Engine in wie Schnurrbart intelligent stecken. Aber wenn Sie sich entscheiden, Zweig zu gehen und wir gehen, um Nest Beispiel zu wecken. Es wird sich wirklich gut in die Symphonie integrieren, weil Zweig
auch von dem gleichen Team gebaut wird , das Symphonie baut. Und so stellen sie sicher, dass es sich wirklich gut integriert, wenn Sie sich entscheiden, das zu verwenden. Sie können auch Zweig außerhalb von
Symphony nehmen und es in Ihren eigenen Projekten verwenden, wenn Sie möchten, weil sie locker gekoppelt sind. So sieht eine Zweigvorlage wie HTML aus, aber nur mit einer speziellen Zweigsyntax. Also, wenn wir eine Variable hinzufügen wollen, verwenden
wir diese doppelte geschweifte Klammern und dann den Variablennamen. Und wir können auch eine Logik darin einfügen, wie Schleifen, wo wir
die geschweifte Klammer und dann das Prozentzeichen verwenden. Und das erlaubt uns, einige Schleifen zu machen. Wir können auch ein bisschen Filterung tun. Ich bin, ich werde durchgehen, wie man all das in diesem Modul verwendet.
11. Twig installieren: In unserem ersten Controller haben wir gerade die Hasen auf dem Festland an eine Zeichenfolge geschrieben, die ein bisschen chaotisch ist. Sei schöner, Templating zu haben. Und Symphonie kommt nicht mit Templating, weil sie locker gekoppelt ist. Aber es gibt eine Template-Bibliothek, die von Symphony gebaut wurde. Es integriert wirklich gut genannt Zweig. Und das können wir jetzt installieren. Also gehen wir zurück zu unserer Kommandozeile. Möchten Sie eine erfordern Zweig zu komponieren. Toll, also ist das Zweig installiert. Und jetzt kann er voran gehen und eine Vorlage erstellen.
12. Erstellen einer Vorlage: Nun, da wir Zweig installiert haben, lassen Sie uns eine Vorlage erstellen. Halten Sie es ziemlich einfach. Und gut Kegel. In der Tat könnte
dies die Homepage sein, sagen wir, Homepage. Und das ist alles, was wir jetzt brauchen. Nennen wir es willkommen, und wir nennen es Willkommens-Punkt-HTML, Punkt-Zweig. Also ein Vorlagenname, dann sind sie Datentyp. Und dann werden wir diesen Punktzweig am Ende hinzufügen. Und wir werden das in das Template-Verzeichnis einfügen. Großartig, jetzt lasst uns das in unserem Controller verdrahten.
13. Den abstrakten Controller verwenden: Lassen Sie uns Controller erstellen, um diese Vorlage zu rendern. So können wir wahrscheinlich diesen Code vom ersten Controller kopieren und einfügen, und nennen wir es Willkommens-Controller. In der Quellcodeverwaltung oder im direkten Fach. Ich ändere den Namen. Slash willkommen. Wir können immer noch die Methoden-Startseite und
Bob aufrufen und dann in die Tweet-Bibliothek laden und uns selbst rendern. Wir können Symphonien abstrakten Controller verwenden, um uns eine nette kleine Hilfsmethode zu geben. Also das erste, was wir tun müssen, ist in abstrakten Controller bringen. Und dann wird sich diese Klasse erweitern. Abstrakter Controller erweitert jetzt sogar. Und was das bedeutet, ist, dass wir jetzt diese schöne laufen die Methode, wo, wenn wir ihm den Namen unserer Vorlage geben, das ist, was wir nennen, Hey, willkommen in HTML, dass Zweig. Wir können einfach das Ergebnis
dieser zufälligen Methode zurückgeben und das wird die Vorlage rendern. Hoffentlich. Also speichern Sie, was wir getan haben, und dann gehen wir zurück zu einem Entwicklungsserver. Und wir haben einen Schrägstrich. Willkommen. Wenn wir es gestoppt haben, wenn wir Zweige einbringen, lassen Sie uns das neu starten. Und da gehen wir hin. Es ist eine Vorlage perfekt gemacht.
14. Variablen in Twig: Dies ist in Ordnung für eine sehr einfache statische Seite. Aber realistisch werden wir irgendwann wollen, dass der Controller einige Daten in diese Vorlage injiziert. Und das ist wirklich einfach mit einem kleinen Helfer zu tun. Also hier für diese zufällige Anstrengung, können
wir einfach ein Array von Daten in hier übergeben. Und in diesem Fall werde
ich nur hinzufügen, an welchem Tag es ist. Sogenannte Standard-Datumsmethode mit Kleinbuchstaben l, die uns den Tag geben wird. Und dann können wir das auch zu unserer Vorlage hinzufügen. Nehmen wir an, heute ist und in Zweig, um eine Variable zu rendern, verwenden
wir doppelte geschweifte Klammern. Also übergeben wir den Würfel hier, und dann rendern wir eine Vorlage. Haha. Und wenn wir die Seite aktualisieren, heißt
es Heute ist Mittwoch, das ist der Durchm, der das filmt. Also bezahle es. Richtig. Das sieht so aus, als würde es funktionieren.
15. Zweige Sicherheit: Wenn wir Variablen in die Vorlage rendern, was möglicherweise zu Sicherheitsproblemen führen könnte. Aber zum Glück, Zweig außer, dass durch die Flucht standardmäßig zu behandeln. Also sagen wir, ich ändere das und irgendwie werde ich böswillig
in einem Skript-Tag übergeben , so
etwas. Was würde dann passieren? Nun, Zweig würde es eigentlich nur rendern, so dass es den Sonderzeichen entkommen
würde und nur unseren Klartext rendern würde, also nichts zu befürchten. Aber was passiert, wenn Sie wirklich einige rendern müssen, Sie haben eine Variable, die etwas HTML enthält und Sie benötigen, dass HTML gerendert werden. Nun, Sie können das tun, indem Sie einfach eine Pipe haben und dann diese rohe Funktion verwenden, die Zweig sagt, dass sie nicht entkommen soll. In diesem Fall wäre
das schlecht, weil jetzt nur der Code ausgeführt wird. Obwohl in diesem Fall ist, Lassen Sie uns ändern, dass auf eine bestimmte kleine sichtbare nafta aktualisieren. Und jetzt haben wir dieses verrückte JavaScript auftaucht. Nicht gut. Wenn Sie also HTML rendern müssen, können
Sie dieses Regel-Tag verwenden. Aber Sie müssen sicherstellen, dass Sie Ihre Eingabe bereinigt haben, um sicherzustellen , dass niemand dort irgendwelche gefährlichen Skripte injiziert. Aber standardmäßig, selbst wenn jemand ein Skript irgendwie injiziert, wird
es es nur als Text rendern. Okay, das sieht gut aus. Lassen Sie uns zurücksetzen und S zwei Hut war. Und machen Sie weiter.
16. Verwendung von Layouts: Diese Vorlage funktioniert, hat
aber zum Beispiel keinen Titel oder keine der HTML-Kopfkörper-Tags. Jetzt könnten wir dies einfach hinzufügen, um dot HTML diesen Zweig zu begrüßen, aber jetzt wäre eine massive Anstrengung, denn dann
müssten wir es für jede Vorlage tun, die wir erstellt haben. Und wenn wir es jemals aktualisieren wollten, müssten
wir alles durchgehen. So ein besserer Weg können wir seine Template-Vererbung verwenden. Und wir können eine Standardlayoutvorlage erstellen und diese dann in all das einbeziehen. Lasst uns das jetzt machen. Also werden wir durch all diese layout.html Zweig stoppen. Und wir speichern das im Template-Verzeichnis. Widgets werden antworten. Und das wird das Haupt innerhalb der Haupt setzen wird auch darauf zurückkommen. Und es ist auf einigen Zeilenumbrüchen hier, weil wir den Header noch nicht auf dem Flattern gestylt haben, also wird es nicht offensichtlich sein. Und dann ist hier drin, wo die Magie passieren wird. Also gehen wir in Zweig, wenn wir geschweifte Klammern Prozent machen, dann machen wir eine Art Logik. Wir werden diesen Inhaltsblock aufrufen. Und dann werden wir diesen n Block hier hinzufügen. Das brauchen wir nicht, denke ich daran. Also, was wir hier getan haben, ist, dass wir ein Layout definiert haben. Und dann haben wir hier gesagt, wir werden den Inhalt platzieren. Also, wenn wir in eine Willkommensvorlage zurückgehen und wir werden einige Änderungen hier vornehmen. Also werde ich sagen, diese Vorlage erweitert, Junge ich HTML, dass Zweig. Und dann wird dieses Bit der Inhaltsblock sein. Und wir könnten so viele Blöcke hinzufügen, wie wir wollten. Wenn wir also einen separaten Fotoblock oder einen Kopfblock hier oben wollen, könnten
wir diese auch hinzufügen und wir könnten so viele Blöcke bekommen, wie wir wollten. Gerade jetzt mit dem sagen, Layout als Basis zu verwenden. Und in den Inhaltsbereich, den wir definiert haben, haha, fügen Sie diesen HTML ein. So ist es jetzt erfrischt. Und großartig, also haben wir unsere Kopfzeile, wir haben zu Fuß, wir haben all das Zeug im Labor. Und dann in der Mitte, hier, haben
wir unsere Inhalte, die spezifisch für diese Vorlage sind.
17. Was sind statische Assets?: Lassen Sie uns kurz klären, was statische Assets sind. Also haben wir unsere regulären Seiten mit unserem PHP, wir generieren eine Seite auf Abruf und die für diesen Benutzer personalisiert werden könnte. Aber einige Dinge liefern einfach dasselbe für alle,
wie Bilder, Symbole, Stylesheets und JavaScript. Wir können diese zusammenstellen und sie dann an alle senden. Wir könnten sie in ein CDN setzen, ein Content-Delivery Network. Und wir wollen nicht, dass sie den gesamten PHP-Stack durchlaufen, weil
wir Dinge wie Berechtigungen oder Personalisierung nicht wirklich überprüfen müssen. Wir müssen ihnen nur das CSS schicken, und das ist es, worüber wir hier sprechen.
18. Statische Dateien verwenden: Symphony gibt uns dieses öffentliche Verzeichnis hier, um Assets zu speichern und es nicht zu
schwören, indem Sie diese automatisch generieren index.html speichern, die alles volle Symphonie einrichtet. Nehmen wir also an, wir wollten eine robots.txt Datei haben. Wir könnten einfach in das öffentliche Verzeichnis gehen und das speichern. Und dann sofort, wenn wir versuchen, darauf zuzugreifen, dann funktioniert es, was großartig ist. Jetzt könnten wir eine ähnliche Sache für CFS tun, wo wir es einfach in das öffentliche Verzeichnis speichern und dann dort ablegen. Aber es wäre schön, wenn wir etwas etwas etwas aufwändigeres damit machen könnten. Und wir werden in den Rest dieses Moduls schauen.
19. SASS: Wir haben unsere Website hier, aber es sieht ziemlich hässlich aus. Also sei nett, wenn wir es mit CSS stylen könnten. Aber im Idealfall wollen wir eine Art CSS-Präprozessor wie Leisten oder Socken verwenden. Weil diese uns alle Arten von netten Erweiterungen zu CSS geben. Für dieses Beispiel werden wir SAS verwenden. Wenn Sie es noch nicht gesehen haben, können Sie es auf der Website nachschlagen. Und es bietet uns viele coole Dinge wie Variablen. Wenn wir also, sagen wir,
eine Farbe definieren und sie an vielen verschiedenen Orten in unseren Stylesheets verwenden wollen , können
wir sie einfach definieren Wächter. Und dann können wir diese Variable verwenden. Und wenn wir es jemals aktualisieren wollen, müssen
wir es nur an einem Ort aktualisieren. Also werde ich einen Link zu den SAT-Beständen im Ressourcenbereich dieser Lektion setzen. Aber zum Glück hat Symphonie eine große Unterstützung dafür. Wir haben, was man Symphonie auf Abruf nennt, und wir werden uns ansehen, wie wir das jetzt konfigurieren können.
20. Encore installieren: Lass uns aufstehen und rennen. Wir haben Symphonie-eigene Koops. Ich werde hier einen neuen Terminal-Tab öffnen. Wir sind immer noch im richtigen Verzeichnis. Und ich werde es laufen lassen. Verbindungen, die Symphonie Slash Web Pack auf Kohle Bündel erfordern. Das wird also etwas von dem, was wir brauchen, herunterbringen. Aber die andere Sache, die wir brauchen, ist, weil das Webpart auf keine Aufgaben statt PHP läuft. Wir werden auch alle unsere Knotenabhängigkeiten installieren müssen, was NPM ist wie der Komponist von NodeJS. Also werden wir auch hier eine NPM-Installation ausführen. Und übernimm diese Zeit. Npm. Aber Literale können riesig sein. Ok. Schön. Und das ist erledigt. Also schauen wir uns das Projekt jetzt gibt es ein paar Änderungen sowie unsere Komponistenabhängigkeiten. Wir haben diese package.json, was ist was? Was ist NPM-Abhängigkeitsmanagement. Es hat eine Reihe von Skripten für uns installiert, für unser Endziel. Und es ist auch erstellen Sie diese Abhängigkeitsdateien, die wir gerade mit NPM installiert haben.
21. Bilde Assets: Also haben wir hier Abhängigkeiten und das wird ähnlich wie Composer dieses Herstellerverzeichnis hat. Wir haben diese Knoten Unterstriche Module, das ist, wo npm seine Abhängigkeiten legt. Und wir haben auch diese kleinen Befehle hier. Und um sie umzubenennen, können
wir npm ausführen dev. Und das ist der Befehl, den wir verwenden werden, um statische Assets zu erstellen. Also in Bezug auf jetzt Guthness Assets, wo wir dieses CSS haben und wir haben auch diese JS-Datei. Und das ist der Ort, an dem wir sie bearbeiten werden. Und dann, als ich das in dieser Build-Datei erstellt habe, wo wir diese komprimierte Version erhalten. Das ist die Ausgabe des Webpacks. Und das sind die Kopien, die auf unserer Webseite einbrechen. Also schreiben wir sie hier und Web Pack wird sie in dieses Build-Verzeichnis kompilieren. Und wir können sie daraus einbeziehen.
22. Enabling aktivieren: Also haben wir jetzt Web-Pack mit unserem CSS und JavaScript und kompilieren es bereit für unsere Inklusive. Aber wir haben nicht tatsächlich ermöglicht Steuer noch, weil On-Call unterstützt mehrere verschiedene CSS-Präprozessoren, Sie können auch weniger und Overs verwenden. Also müssen wir weitermachen und es auch für SAS konfigurieren. Also fangen wir damit an, dies zu ändern. Wir werden das umbenennen. Sas verwendet SCSS. Also werden wir das ändern. Und dann gehen wir in diese app.js und wir werden diese Referenz hier aktualisieren. Es zeigt also auf die richtige Datei. Und dann gehen wir zu diesem Webpart, dot-com ab.js. Es wurde erstellt, als wir onco installiert haben. Und standardmäßig, und wir haben diese SAS vorinstalliert, aber es kommentiert. Also lasst uns diesen Kommentar entfernen. Und dann haben wir das ermöglicht Sass Lader da drin. Und schließlich müssen wir
eine andere Abhängigkeit mit npm installieren , um sie zu verarbeiten. Also gehen wir zurück zu unserer Kommandozeile. Installieren Sie npm dash, dash save dev, um die Abhängigkeit zu installieren und schreiben Sie diese Änderung in die package.json. Wenn wir also Composer-Abhängigkeiten installiert haben, Juden es automatisch hinzu. Hier müssen wir npm explizit sagen, dass wir möchten, dass es sich daran erinnern, dass wir diese Abhängigkeit
installiert haben und wir einen Sass-Lader benötigen. Und SAS. Okay, großartig, und das ist installiert. Also, jetzt lasst uns npm ausführen dev. Nur um zu überprüfen, dass alles funktioniert. Toll, also haben wir nichts explodiert. Das sind gute Neuigkeiten. Lassen Sie uns jetzt die Vermögenswerte einbringen, die wir hier geschaffen haben.
23. Einfügen unseres Assets: Jetzt, da wir unsere SS in dieses öffentliche Build-Verzeichnis kompilieren, wie bekommen wir es in unsere Vorlage? Nun, wir haben ein nettes kleines Etikett, das uns dabei helfen wird. Also öffnen wir unsere Template-Datei layout.html, Zweig. Wir können auf Kerneintritt Link Tanks tun. Und dann, wenn wir diese Seite durch wirkt aktualisieren, obwohl der Hintergrund grau verschwunden ist. Und das war das Standard-CSS darin. Also das ist SaaS, obwohl wir keine SAS verwenden, wird dann hier eingefügt, wo es kompiliert wird. Und dann bringen wir das Ende. Also, wenn wir uns HTML ansehen, setzt EUR LAN. Lassen Sie uns auch schnell zu Google Fonts gehen und einen Eisschaum bringen. Open Sans wird es tun. Und wir wollen das Reguläre und das Mutige. Ich denke. Ich werde mir das einfach schnappen. Und ich denke, ich habe Sends installiert geöffnet, aber ich möchte, dass es auf jedem Computer funktioniert. So nett. Also bringen wir CSS ein, wir bringen auch eine Schriftart von hier. Und jetzt wollen Sie wahrscheinlich nicht, dass es so aussieht. Also können wir anfangen, etwas CSS zu schreiben.
24. CSS hinzufügen: Lassen Sie uns diese ziemlich hässliche Seite in etwas Schöneres verwandeln. Also zuerst gehen wir zurück zu unserer Kommandozeile und wir werden npm run watch laufen lassen. Dies ist ähnlich wie NPM, wenn dev, aber es funktioniert für alle Dateiänderungen. Sobald wir eine Änderung in der Datei vornehmen, wird
sie automatisch neu kompiliert. Also hier schließen wir all dies nach unten, und lassen Sie uns diese App Dot CSS öffnen. Erstens werde ich eine Variable erstellen. Also haben wir eine Standardgröße für immer hängen. Und hier ist sie diese nette Open Sans Schriftart. Wir werden n
Schriftzeichen setzen . Lassen Sie uns auch jede Marge loswerden. Und Stil F0 über Dinge, die Stil des Fußes verlässt , dass Standard Putting Variable. Wir sind weg. Und jetzt, da wir eine Farbdifferenzierung haben, können
wir die horizontale Linie ausschalten. Und wir werden eine ähnliche Sache mit einem Header machen. Wieder auch der vorherige Boden zu Linie blau. Und geben Sie ihm eine schöne große Schriftgröße. Und einige Polsterung wieder, mit der Variablen der Grade. Gehe auch in das Haupt-Tag. Und ich füge etwas Polsterung hinzu. Und dann, wenn wir das speichern, wird
es alles neu kompilieren. Wenn wir nun die Seite aktualisieren, perfekt, müssen
Sie möglicherweise eine harte Aktualisierung durchführen, da es keine Cache-Busting gibt. So, dass B Kontrolle, denken Sie Kontrolle Verschiebung oder vielleicht unter Windows. Ich bin nur, um
das Geld zu löschen , damit Sie nicht die alte Version und das Stylesheet bekommen, aber wie Sie sehen können,
jetzt, wo wir aktualisiert haben, haben
wir all unsere CSS funktioniert gut, und das fängt an sehen aus wie eine respektable Webseite.
25. Doktrin ORM: In diesem Modul werden wir auf Datenbanken
und Symphonie speziell mit der Doktrin von RM suchen . Orm steht für Objekt-Relational-Mapper. Es geht also darum, Objekte in PHP zu Datenbankzeilen zuzuordnen. Jemand, den wir die Daten rausziehen. Wie bekommen wir es in ein gut verwendbares PHP-Objekt und wie setzen wir es zurück? Und die Idee, ein ORM zu verwenden, ist, dass das ORM sich um all diesen Wald kümmert. So können wir einfach PHP-Objekte schreiben und wir müssen uns keine Sorgen um das SQL machen. Die beliebtesten ORMs in PHP sind Doctrin am propel. Und wenn Sie aus anderen Sprachen kommen, haben
Sie vielleicht von Dingen wie Ruhezustand und Active Record gehört. Die alle machen das Gleiche. Sie müssen nicht dunkelgrün für Symphony verwenden, aber es ist wirklich gut integriert, so dass es lose gekoppelt ist, aber es ist sehr gut integriert. Und Sie erhalten eine Menge einfacher Funktionalität aus der Box. Und Doktrin ermöglicht es uns, so ziemlich jede Datenbankplattform zu verwenden. Also könnten wir MySQL, MariaDB verwenden, und ich werde MySQL in diesem Beispiel verwenden, weil das
am häufigsten für die Kopplung mit PHP-Anwendungen ist. Aber Sie könnten auch Postgres,
Oracle, SQL Server, SQL Lüge verwenden . Und Sie müssen nicht wirklich viele Änderungen daran vornehmen. Du erzählst einfach, was du benutzen willst. Sie schreiben Ihre PHP-Objekte. Und wieder kümmert sich die Lehre um all das. Also, wie funktioniert es? Wie ordnen wir unsere PHP-Objekte tatsächlich der Datenbank zu? Wir verwenden spezielle Klassen, die wir Entitäten nennen werden, aber im Wesentlichen Git aus regulären PHP-Klassen mit einigen Anmerkungen auf. Und dies ist ein Beispiel dafür, wann wir
für ein Produkt schreiben werden und wir eine Anmerkung verwenden, um zu sagen,
okay, das ist und Entität. Eine Entität ist also analog zu einer Tabelle in der Datenbank. Also hey, wir haben eine Produktklasse. Und dann werden wir Instanzen dieser Klasse haben. Und das ist wie zu sagen, wir haben eine Produkttabelle in der Datenbank und es wird Zeilen in dieser Tabelle geben. Und dann jede der Spalten verwenden wir Annotationen, um auch zu kartieren. Zum Beispiel könnten wir eine ID-Eigenschaft und eine druckvolle Getter und Setter für die Klasse haben. Und wir werden das mit Anmerkungen markieren, um zu sagen, okay, das ist die ID-Spalte in
dieser Tabelle, und so weiß die Doktrin, wie sie zugeordnet werden kann.
26. Lokales Datenbankaufbau: In diesem Modul werden wir die Datenbank konfigurieren. Doctrine unterstützt eine Reihe von Plattformen, so dass Sie technisch jeden verwenden können, den Sie wünschen. Wenn Sie MySQL und PHP haben, mein Admin lokal installiert, dann großartig, diese Lektion ist für Sie. Alles, was wir tun wollen, ist eine Datenbank zu erstellen. Also bin ich Jets in PHP, mein Admin hier. Ich werde eine Datenbank namens Byte Shop erstellen. Und dann gehe ich zur Registerkarte „Privilegien“. Und wenn ich nach oben gehe, weil ich einen neuen Benutzer erstellen möchte. Lassen Sie uns eine Benutzerkonten und grit Nuan, kriminelle kombiniert Schuss von lokalen Host. Ich werde Pitch um die halbe Minute zu lassen, generieren Sie das Passwort. Und wichtig ist, dass wir die
native MySQL-Authentifizierungsansicht für einige der neuen Innovationen eines PDR verwenden müssen , Sie vielleicht nicht brauchen, aber es ist nur ein langwieriges Problem mit PHP, das Sie native MySQL verwenden müssen Authentifizierung oder Hausaufgaben. Also, das ist nur Slashdot irgendwo sicher. Und ich hätte erst das Benutzerkonto erstellen können. Kämpfen Sie sich zu fragen, was passiert, wenn ich matte nehmen. Ok, das lässt es gehen. Okay, jetzt, also haben wir diesen Bike-Shop-Benutzer erstellt, und wir haben auch diese Bike-Shop-Datenbank erstellt. So werden wir es tun. Wenn Sie MySQL und PHP haben, mein Admin lokal installiert. Wenn nicht, zeige ich Ihnen, wie wir es bei
Amazon machen können , ohne dass Sie es lokal installieren müssen. In der nächsten Lektion.
27. Alternative AWS: Wenn du MySQL nicht so lokal hast und du denkst, Chris, dann will ich das wirklich nicht tun. Es ist eine Menge Mühe. Mein Computer hat nicht so viel Speicher. Die gute Nachricht ist, dass Sie auch
Amazon Web Services erhalten könnten , um Ihre Datenbank für Sie zu hosten. Wenn Sie also bereits mit Amazon Web Services eingerichtet sind, können
Sie dieses kostenlose Kontingent wahrscheinlich verwenden, um diesen Kurs durchzugehen. Und die Möglichkeit, dies zu tun, besteht darin, sich bei der Konsole, console.log AWS bei amazon.com, anzumelden. Und er Sie könnten auf alle Web-Services von Amazon wie EC2 und
S3 zugreifen und all das, was wir heute wollen, werden wir nicht RDS Relational Tag für Service. Und das wird Ihnen im Wesentlichen eine MySQL-Datenbank in der Cloud geben. Und das ist, wenn zwei verschiedene Setup, dieser Amazon von Aura ist in Ordnung, weil das MySQL-kompatibel ist. Also klicken wir auf Datenbank erstellen und wir werden, auch jetzt gibt es eine Option für MySQL. Mariadb wäre auch in Ordnung. Wir werden Amazon Aurora verwenden, weil es so ist, und wir können hier sehen, dass es MySQL-kompatibel ist. Wir können Version scanf wählen, etwas ein bisschen moderneres. Das hier. Und es wird ein Devin-Test1 werden. Dieser TV-Klassifikator ist in Ordnung. Verwenden wir einfach das gleiche Passwort hier. Offensichtlich werde ich nur diese Anmeldeinformationen löschen. Nachdem ich diesen Kurs gefilmt habe. All diese Optionen sind in Ordnung. Lassen Sie uns fortfahren und klicken Sie auf Datenbank erstellen. Und es dauert eine Weile, bis Amazon alles in der Cloud erledigen kann. Es dauert also vielleicht 510 Minuten, um das einzurichten. Aber wenn wir gehen bis zu dieser Ansicht Anmeldeinformationen hier, dann können wir sehen, dass wir den Administrator und das Passwort haben. Und sobald es so werden wir in der Lage sein, sich mit der Datenbank als auch zu verbinden. Das sind also die Anmeldeinformationen, die Sie benötigen, wenn Sie auf diese Weise darauf zugreifen möchten, wird
offensichtlich PHP meinen Admin nicht haben. Du könntest PHP meinen Admin dafür konfigurieren. Aber was wahrscheinlicher ist, dass Sie tun, ist Software wie ich habe SQL verbieten einen Mac. Aber auch Heidi ist wirklich gut. Wenn Sie unter Windows sind. Und Sie können hier eine neue Verbindung erstellen. Und du wirst einfach alle Anmeldeinformationen eintragen, die du aus Haaren bekommen wirst. Toll, jetzt ist es geladen. Wir haben auch einen Ha, Admin. Wir haben Benutzername, Passwort und wir haben auch den Standort, mit dem wir eine Verbindung herstellen müssen. Das sind also die Anmeldeinformationen, die Sie beim Anmelden mit einer Art von SQL-Client, wie SQL bro
28. So konfigurieren: Nachdem wir nun eine Datenbank auf MySQL erstellt haben und für welche Plattform Sie auch immer verwenden, müssen
wir unsere Symphony-App konfigurieren, damit Sie sich mit ihr verbinden können. Also gehen wir zurück zu unserem Terminal, werden einfach abbrechen und wir müssen anfangen, Dinge zu installieren. Lamellen komponieren, die Symphony ORM Pack erfordern. Und das bringt die Bibliotheken ein, die wir brauchen, um die Doktrin ORM zu verwenden. Also gib das einfach eine Minute, um sich zu drehen. Ok, nett. Und dann werden wir uns auch helfen, etwas von dem Gebäude zu machen, wir brauchen aber Bindestrich, Bindestrich, weil dies
eine Dev-Abhängigkeiten sein wird , die wir verwenden werden, wenn wir lokal entwickeln, aber wir werden nicht brauchen es für die Produktion. Wir werden brauchen, dass die Symphonie Bündel kommen kann. Okay, jetzt, also haben wir alle Abhängigkeiten, die wir brauchen. - Jetzt. Wir müssen dies auch in einer.m-Datei konfigurieren. Also haben wir diese Datenbank-URL hier. Also nennen wir die Nutzung von Fahrrad-Shop und wir haben ein Passwort hier. Und lassen Sie uns dies in localhost ändern. Und D b wird auch Einkaufsladen genannt. Und das andere, was wir tun müssen, ist
die Version von MySQL zu übergeben , die ausgeführt wird, wenn wir eine Verbindung zu einem MySQL herstellen. Ich denke, ich habe eine ziemlich leichte Version 8. Okay, jetzt, also haben wir unsere Abhängigkeiten installiert und wir haben unsere Datenbank-URL mit dem richtigen Pfad
aktualisiert.
29. Erstellen einer product: Jetzt haben wir unsere Datenbank konfiguriert, es ist Zeit, unsere erste Entität zu machen. Und eine Entität stellt eine Datenbanktabelle dar. Und wir könnten alles von Grund auf neu schreiben. Aber es ist oft einfacher, die eingebauten Tools zu verwenden, die wir bekommen. Wir haben Lehre und Symphonie. Also gehen wir zur Petri-Ben-Konsole. Wenn Sie Doppelpunkt-Entität machen. Und ich werde ihm einen Namen geben. In diesem Fall werden wir es Produkt nennen. Und das wird uns durch eine Reihe von Fragen führen, wie wir wollen, dass die Entität aussieht. Also müssen wir Eigenschaften anordnen, zum Beispiel einen Namen. Und es wird eine Schnur sein. Ok, nett. Und Sat up Preis wird sein eine
Dezimalseiten sein, ein Bild, das in diesem Fall wird auch eine Zeichenfolge sein. Es kann einfach auf einen Dateinamen zeigen. Sagen Sie, dass dieser NULL-fähig sein kann. Und wir werden eine Beschreibung haben. Es wird eine SMS sein. Als nächstes kann man auch NULL-fähig sein. Okay, nett, und das ist erledigt. Lass uns sehen, was das geschaffen wurde. Also haben wir das jetzt in der Quelle. Wir rufen diesen Entitätsordner auf. Und wir haben dieses Produkt. Es ist also jeder Entitätsnamespace. Und es hat alle Eigenschaften, die wir erstellt haben, den Namen, Preis, Bildbeschreibung. Es hat auch Getter und Setter für alle diese Methoden generiert. Und wir haben auch seine ID-Eigenschaft, die automatisch für uns hinzugefügt wird. Und dann haben wir auch dieses Produkt-Repository, das wir auch für die Suche in der Tabelle
verwenden werden . war alles, was wir tun mussten, war, diese Fragen zu beantworten. Und all dieser Code wurde für uns generiert.
30. Erstellen des Schemas: Wir haben unsere Produkt-Entitätsklasse hier mit unserer Datenbank selbst ist noch leer. Jetzt könnten wir die Tabellen manuell erstellen. Aber weil wir bereits definiert haben, wie unsere Produkt-Entität aussehen soll. Das müssen wir nicht tun. Wir können die Doktrin dazu bringen, das für uns zu tun. Und wir tun, dass von dort in PHP gewesen Konsole machen Doppelpunkt Migration. Und das hätte eine Migrationsdatei erstellt haben sollen. Also, wenn wir uns jetzt anschauen, werden
innerhalb zu uns Migrationsverzeichnis zurückgegeben. Und das gibt uns eine Möglichkeit, die Datenbank programmgesteuert zu aktualisieren und herunterzustufen. Und es hat eine eigene Methode, bei der es
diese Tabelle erstellt , und eine Down-Methode, um sie loszuwerden. Und dann können wir das ausführen. Wir könnten dies im Rahmen unseres Build-Prozesses automatisieren. Aber hier werden wir es einfach manuell ausführen. Also gehen wir zurück. Und jetzt, da wir mit dem SQL zufrieden sind, das generiert wird, wenn Doctoring Doppelpunkt-Migrationen ausführen, Doppelpunkt migrieren. Und das wird das Migrationsskript ausführen. Und jetzt, wenn wir zurück zu unserer Datenbank gehen, perfekt, haben wir unsere Produkttabelle. Wenn wir uns die Struktur ansehen, entspricht
sie der Struktur der Entität. Also haben wir jetzt geschrieben, wir haben gerade den PHP-Code und alle SQL wurde für uns mit Doktrinen, Tools gepflegt.
31. Beispieldaten importieren: Nun, da wir Datenbank haben oder von diesem Saft Bev Admin laufen heute. Also, wenn wir in die Produkttabelle gehen, ist es leer. Und sei nett, wenn wir ein paar Beispiele hätten. Also habe ich die für dich zur Verfügung gestellt. Wenn wir also SQL-Code testen, können
wir gut laufen. Lassen Sie uns einfach graben und in die SQL hier bleiben. Also hoffentlich haben Sie den Beispielcode heruntergeladen. Und ich habe es hier. Ich werde das einfach aufmachen. Wenn Sie in den Beispielcode gehen, den Sie von
GitHub erhalten können , und Sie gehen in diese Ressourcendatei. Das ist dieses Beispiel Produkte, die SQL zu kopieren und einfügen, die in und kann dies in PHP, meinem Administrator tun. Oder wenn Sie die Amazon-Datenbank verwenden, können Sie SQL Pro verwenden oder Heidi hat einen SQL-Client, den Sie konfiguriert haben, und führen Sie einfach die SQL aus. Und dann bekommst du all diese Beispiele. Hier sind ein paar andere Dinge, die wir aus
dem Beispielcode in unser Projekt in der Öffentlichkeit kopieren möchten . Lassen Sie uns all diese Bilder einbringen. Und auch in den Assets und CSS hat schöne CSS-Luft erlaubt. Also nochmal, lasst uns das einfach rüber kopieren. Und wenn Sie zu Ihrem Projekt zurückkehren, dann finden Sie alle Less CSS. Und lasst uns sie einfach auf den neuesten Stand bringen. Also sagen wir npm run dev, nur um das CSS neu zu erstellen, das wir haben. Am Ende sollten also einige Beispielprodukte in Ihrer Datenbank enthalten sein. Sie sollten ein aktualisiertes CSS haben. Und du solltest hier auch ein paar Bilder haben. Und das wird Git's Helfer beschleunigen die Dinge, während wir das Projekt durchlaufen.
32. Liste die Produkte: Jetzt, da wir alles eingerichtet haben, lassen Sie uns einen Controller erstellen und einige dieser Datenbankobjekte rendern. Also haben wir es, also gehen wir rein und kopieren ihn einfach preislich. Lassen Sie uns einen Willkommenscontroller nehmen. Und wir nennen diese Produkte Control-A. Und wir werden dieses Repository einbringen wollen, das großartig für uns war. Wir benennen dies in Produkt-Controller-Homepages um. Ordnung. Lassen Sie uns dies zu dem tatsächlichen Schaden machen, der der Wurzel verpfändet wird, wird nur Schrägstrich sein. Und dann werden wir einige der magischen Verkabelung und Symphonie verwenden, sagen wir, bringen das Repository ein und nennen es Repo. Das bedeutet also, dass Symphony diese Methode aufruft, automatisch das Paul-Repository injiziert, das zum Durchsuchen der Datenbank verwendet wird. Und dann hier, lassen Sie uns eine Liste von Fahrrädern Budget sagen Repo, Find By. Dies ist eine Methode, bei der wir Spalten hier einfügen könnten. Wir könnten also Name gleich Bike x machen aber in diesem Fall werden wir einfach alles finden. Also werden wir es einfach so lassen. Und dann werden wir hier sagen, dass es eine Homepage rendern soll. Und wir werden in unserer Liste der Fahrräder vorbeikommen. Okay, das sieht alles gut aus für den Produkt-Controller. Jetzt geht es zum Erstellen einer Vorlage in der nächsten Lektion.
33. Produktaufstellung: Wenn wir nun unseren Controller erstellen, lassen Sie uns auch eine Vorlage erstellen. Also werde ich einfach kopieren und einfügen. Willkommen. Und wir nennen diese Homepage HTML den Zweig. Sie waren das Verzeichnis der Vorlage. Und wir werden das Layout wie zuvor erweitern. Wir werden diesen Code ändern. Wir haben ein schönes CSS kopiert, und wir werden das hier verwenden. Und wir benutzen eine Zweiglogik. Also sagen wir für Fahrrad, in Fahrrädern, OK. Und schließen Sie das div. Und dann wird es hier eine Schleife erstellen. Sagen Sie, wenn Fahrrad Bild. Und wir werden dies letztendlich auf eine Produktseite weiterleiten. Also lassen Sie uns so etwas sagen. Und das ist, wie der Byte-Name, und es wird auch ein Link sein. Und dann werden wir endlich den Preis setzen. Da gehen wir. - Cool. Schauen wir uns mal an, was wir hier tun. Sind wir schleifen durch Essen zu den Fahrrädern. Und wir sagen, wenn es ein Bild hat, zeigen Sie das Bild an. Wenn nicht, zeigen Sie einfach den Namen und den Preis an. Okay, wenn wir also überprüfen, dass unser Dev-Server noch läuft, sieht so aus, als wäre er neu gestartet, nur um sicherzustellen, dass wir alle Lichter-Abhängigkeiten in haben. Und wenn wir nur einen Schrägstrich bekommen, unser Produkt-Repository nicht finden
können, denke
ich, weil ich dort einen Namespace falsch habe. Es wird also App-Entität für Gegner des Baumes sein. Lassen Sie uns hier nochmals nachsehen. Noch. Es ist kein Repository. Lassen Sie uns in der nächsten Lektion weniger Probleme beheben.
34. Unsere Produktliste ansehen: Okay, so einfaches Problem hier, da ich ein zusätzliches S da drin bin. Und sobald wir das behoben haben, funktioniert es gut. Großartig. Wir nehmen also alle Datensätze in der Datenbank, die wir mit diesem Produkt-Repository tun, in die Vorlage
übergehen. Und die Vorlage durchläuft sie dann und zeigt sie alle an. Da. Wir haben unsere Datenbankverbindung aufgebaut und arbeiten und Daten abrufen.
35. Routingoptionen: Symphony bietet uns eine Reihe von Optionen, wenn wir Wurzeln definieren. Also, bisher haben wir gerade eine statische Route definiert. Wove hat gerade gesagt, das ist unser Weg. Wir möchten, dass es der Methode zugeordnet wird, die wir kommentiert haben. Aber wir können auch Variablen verwenden. Mit diesem zweiten Beispiel haben
wir diese Idee von Slug zum Beispiel einen Blog-Beitrag. Jeder Blogbeitrag wird seinen eigenen Slogan Seite haben, um darauf zuzugreifen, müssen
wir dorthin gelangen. Wir können auch die Methoden einschränken, die Leute verwendet haben, um es zu nennen. Also Dinge wie get, post, put, delete, wir können sagen, OK, wir wollen nur, dass diese Wurzeln hier kartieren, wenn es eine dieser Methoden standardmäßig ist, wenn sie Mönche akzeptieren. Aber wir können das begrenzen, wenn wir wollen. Wir können die Route und den Namen geben, was nützlich ist, wenn wir Dinge wie Weiterleitungen tun. Und wir wollen auf eine bestimmte Route umleiten. Wir können ihm einen Namen geben, und wir können auch Filter zu den Parametern hinzufügen. Zum Beispiel, im dritten Beispiel, wenn ID nur eine Zahl sein soll,
und wir wollen nicht, dass die Route übereinstimmt, wenn es irgendwelche Zeichen und das gibt, und die alphabetischen Zeichen, dann könnten wir Anforderungen hinzufügen und zu sagen, okay, das muss mit diesem regulären Ausdruck übereinstimmen. So haben Symphonien, Routing-Annotationen, obwohl wir bisher nur wirklich grundlegende verwendet
haben, eine Reihe anderer Optionen. Und wir werden in diesem Modul auf einige dieser Parameter eingehen.
36. Produktseiten: Wir haben eine Liste erstellt, aber wir möchten in der Lage sein, auf diese zu klicken und die Details anzuzeigen. Gehen wir also weiter und kümmern uns darum. Also werden wir eine neue Methode innerhalb unseres Produkt-Controllers erstellen. Und beginnen wir mit der Definition der Wurzel. Es wird also Schrägprodukte geben. Und dann haben wir den Ausweis. Und wir werden die ID und geschweifte Klammern setzen, um Symphonie jetzt ist es variabel. Und dann definieren wir die Methoden. Da wir Variable hier addiert haben, können
wir ID als Variable in die Methode nehmen. Und wir werden auch noch ein paar andere Sachen wollen. Also nehmen wir eine Anfrage auf. Und wir werden unser Produkt-Repository wieder wollen. Und wir werden eine Antwort zurückgeben. Wenn ich, lasst uns diese Bitte vorerst loswerden. Und ich denke, wir werden das hier benutzen. Und das erste, was wir tun müssen, ist das richtige Fahrrad zu finden. Und wir können das nur mit der find-Methode tun, mit der wir einen Primärschlüssel übergeben können. Und in diesem Fall haben wir die ID, also können wir das tun. Und dann werden wir nur eine Template-Klasse rendern. Wir werden das Fahrrad einsteigen. Das sollte also alles sein, was wir anfangs dafür brauchen. Lassen Sie uns in der nächsten Lektion eine Vorlage dafür erstellen.
37. Product: Lassen Sie uns eine Vorlage erstellen. So können wir wahrscheinlich Homepage als Basis verwenden. Wir werden es Details zu HTML Zweig nennen. Und lege etwas Brot auf. So dieser Benutzer leicht zu navigieren zurück zur Homepage. Und dann werden das Produktdetails sein. Ein schönes vorgebautes CSS. Wir werden nicht durch die Räder schleifen, weil wir nur ein Fahrrad haben. Und hier, lassen Sie uns das Bike Bild nehmen. Und dann das zweite div, und legen Sie einen Byte-Namen in H1 und legen Sie den Preis darunter. Und klopft gute Stadt hier an. Sagen Sie, wenn ein Fahrrad eine Beschreibung hat. Ok, sieht gut aus. Also jetzt, wenn wir hier gehen und wir klicken durch, um ein Fahrrad, perfekt, so haben wir ein wenig Brotkrume, wir haben unser Bild, Sie setzen den Namen und den Preis. Und wir haben auch die Beschreibung unten gelesen.
38. Nicht gefundene Fehler umgehen: Dies funktioniert gut, wenn Sie von
der Homepage aus gehen und nach Details klicken, was passiert, wenn diese ID falsch war? Es war für ein nicht existierendes Fahrrad. Dürfen wir ein Fahrrad entfernt und da war noch eine alte Verbindung. Nun, ich würde alle Condie schief gehen und wir bekommen 500 Ära, weil das Fahrrad null ist, aber wir versuchen immer noch, auf das Bild zuzugreifen. Lassen Sie uns also etwas Handling hinzufügen, um das zu überprüfen. Also lassen Sie uns auf eine Detailseite gehen. Und hier werde ich sagen, wenn Fahrrad nein ist, sorry. Und das bekommen wir von der feinen Methode. Wenn es das Ideal nicht finden kann, geben Sie es uns
einfach Bescheid. Dann können wir ein paar andere Symphonien verwenden, nette Hilfsmethoden. Nur um zu sagen, dass dieses Byte nicht existiert. Also für ewig. Und wenn wir zurückgehen, okay, das ist gut. Es sieht also irgendwie gleich aus, weil es immer noch eine Fehlerseite ist, aber wir erhalten jetzt eine A für Zeile vier statt einen 500-Fehler. Der Server explodiert also nicht. Dies ist ein Bereich, den wir erwarten, dass passieren und wir können diese Seite für den Benutzer ein bisschen schöner aussehen lassen.
39. Anpassen: Wenn der Benutzer eine Vier- oder Vier-Ära bekommt, dann wollen wir, dass es ein bisschen hübscher aussieht, als dies ideal zu unserem Design passt. Und das können wir ziemlich leicht machen. Also lasst uns nehmen, lasst uns einfach wieder eine Homepage schnappen und wird es tun. Aber wenn Anpassung Luft, so werden wir immer noch in das Layout zu bringen. Aber lasst uns diesen alten Inhalt loswerden. Ich werde sagen, die Seite wurde nicht gefunden. Und dann sagen wir jemanden wie, Entschuldigung, die Seite, die Sie suchen, existiert nicht. Und wir geben ihnen einen Link zurück zur Homepage. Jetzt ist die Art und Weise, wie wir das zum Laufen bringen, super-einfach in AIG,
aber ein bisschen fummelig . Also müssen wir speziell einen Fehler für oder für
den HTML-Punktzweig und innerhalb
des Template-Verzeichnisses aufrufen den HTML-Punktzweig und innerhalb , wenn zwei Kredite keine Trickle Bundles sind. Und dann innerhalb von Bundles schaffen wir einen namens Zweig 10. Und darin müssen wir eine genannte Ausnahme erstellen. Und dann werden wir es endlich retten. So ist es ziemlich spezifische Vorlagen, Bundles, Zweigbündel, Ausnahmefehler für vier. Und das ist einfach nicht ein bisschen Abstand und das auch,
okay, das sieht gut aus. Jetzt, da wir den Entwicklungsserver ausführen, werden
wir nicht wirklich die Fehlerseite hier erhalten, um weiterhin die Symphony-Debug-Sache zu erhalten. Aber wenn wir testen wollen, wie unsere Seite aussieht, können
wir das tun, indem wir
Ära unterstreichen und dann den Fehlercode in diesem Fall vier oder vier setzen. Und das hier können wir sehen, dass wir unsere Seite nicht gefunden Fehler haben, und das ist, was der Benutzer in der Produktion sagen wird. Also in der Entwicklung erhalten wir die volle Symphonie jemals Stacks, die wir die Schuld Produktion debuggen können. Der Benutzer würde diese schöne Fehlerseite sehen, die wir gerade erstellt haben.
40. Zum Korb hinzufügen: In diesem Modul werden wir uns um die Anti-Korb-Funktionalität kümmern. Also werden wir eine Art von Add-to Basket-Button brauchen, die Benutzern
erlaubt, Fahrräder hinzuzufügen, um Korb zu liegen, genau wie jede E-Commerce-Plattform. Und wir müssen diesen Korb mit mehreren Seiten beibehalten. Sobald sie hinzugefügt haben, verschwindet es nicht auf der nächsten Seite. Und zum Glück ist symphony mx wirklich einfach zu tun, indem Sie
die PHP-Sitzungsfunktionalität in einige nette, einfach zu bedienende Funktionen einbinden .
41. zum Korb hinzufügen: Gehen Sie zu Details Vorlage hier. Also lassen Sie uns voran und fügen Sie diesen Korb-Button hinzu. Also, wenn wir die Detailvorlage öffnen und unter Preis, werden
wir nur Mist Form. Und dann n hat, verwenden wir eine Variable, die wir noch nicht erstellt haben. Und wir werden f im Korb sagen. Wenn es bereits im Warenkorb ist und wir nicht wollen, dass die USA bauen, um wieder hinzuzufügen. Also machen wir eine deaktivierte Schaltfläche und wir geben ihnen ein Feedback. Odeon sagt, in den Warenkorb gelegt. Und wenn nicht, dann erstellen wir einen Knopf bis zum Korb. Und wir werden die M taub machen. Und wir haben unseren Schaum bereits geschlossen. Großartig. Also, wenn wir jetzt aktualisieren, wird
es beschweren, dass der Korb nicht existiert. Also lasst uns das schaffen. Und wollen falsch für jetzt. Perfekt. Also haben wir jetzt diesen Knopf. Es tut nichts, aber die Schaltfläche selbst ist, dass wir es in der nächsten Lektion verdrahten.
42. Den session erstellen: Die Konfiguration der Session wird schön und einfach sein da die Session-Handhabung mit Symphony einhergeht. Sogar bei einer Basisinstallation
gibt es einige Konfigurationen, die wir betrachten können. Also, wenn wir in die Konfiguration und dann in Pakete gehen, gehen
wir zu diesem Framework. Hey, wir haben eine Reihe von Optionen für die Sitzung damit wir die Sitzungsbehandlung ändern können, wenn wir wollten. Aber in diesem Fall ist
alles, was Symphonie uns standardmäßig gibt, in Ordnung. Also können wir dieses Framework Dot Yaml so lassen, wie es ist, und wir sind bereit zu gehen. Wir können einfach eine Sitzung aus der Box verwenden. Wir müssen keines der Pakete installieren.
43. request bearbeiten: Jetzt, da wir wissen, dass wir einen Sitzungsdienst verwenden können und wir haben eine Vorlage. Wir können hineingehen und in Produkt-Controller verdrahtet. Und ein paar Dinge, die wir
nur das Anforderungsobjekt benötigen , weil eines das Antwortobjekt für meine HTTP Foundation war. Und kann auch in unserer Sitzung zu bringen. Auch hier ist dies ein HTP Foundation-Paket und I Abschnitt tut Session-Schnittstelle. Also haben wir iOS bekommen. Also können wir die jetzt hier unten benutzen. Und wieder, wir haben Symphonien,
Magie, wo ich klingelt. Wir bekommen Handtuchsymphonie, was wir wollen. Und es wird sich darum kümmern, es tatsächlich darin für uns zu verdrahten. Also müssen wir nicht explizit übergeben eines dieser n. wir sagen einfach nicht die Anfrage
und die Session-Schnittstelle und Symphonie und wir kümmern uns um den Rest. Ok, also lassen Sie uns jetzt etwas Handling für diesen Code hinzufügen. Das erste, was ist, dass wir Korb bekommen. Und der zweite Parameter, den wir auf das Gatt aufrufen, ist der Standard. Wenn es also keinen Korb in der Sitzung gibt, haben
wir es getan, wird es ein leeres Array bekommen. Und dann werden wir sagen, ist diese Anfrage eine Postanforderung anstatt eine GET-Anfrage? Wenn ja, wissen wir, dass wir auf den Anthro Basket Button und die EFSA geklickt haben. Und wir werden das Fahrrad hinzufügen. Und dann eine letzte Sache ist, und wir müssen dies in der Korbvariablen aktualisieren. Und wir werden einfach verängstigt und ich werde dafür reden. Okay, also holen wir den Skarabäus, die Sitzung. Und wenn nicht, dann werde ich nur ein leeres Array haben, was in Ordnung ist, das ist ein leerer Korb. Und dann sagen wir, wenn dies eine Post-Anfrage ist, klicken
die Benutzer auf die Schaltfläche. Dann wollen wir das Fahrrad in den Korb legen. Wir werden die ID als K in einem assoziativen Array verwenden und dann das Byte darin speichern. Und dann schreiben wir den aktualisierten Korb zurück in die Sitzung. Und dann hier unten werden wir sagen, okay, durchsuche den Korb voll dieses Bikes. Und wenn es A1 ist, dann sind die Fahrräder bereits im Korb, so dass wir die Über-Taste anzeigen können. Also lasst uns einfach diese Seite aktualisieren und auf den Warenkorb. Und Boom, da ist er. Wir sind jetzt wirklich zum Warenkorb Button hinzugefügt, weil es hinzugefügt wird. Und wenn wir die Seite neu laden, sieht
es in der Sitzung aus, findet das Fahrrad bereits da ist. Und lassen Sie uns einfach aktualisieren, um sicherzustellen, dass das Festhalten perfekt ist.
44. Basket: Wir müssen den Warenkorb Funktionalität arbeiten hinzufügen. Das nächste, was wir wollen, ist in der Lage sein, tatsächlich einen Korb zu sehen. Wolke, jemand ist runter. Und ich werde kopieren und einfügen. Produkte können viel ausprobieren. Und wir werden diesen einen Korb-Controller nennen. Dies wird es auch umbenennen. Und dann rufen wir einfach diesen Korb an und wir setzen eine Wurzel auf Schrägkorb. Ich weiß nicht, wie diese ID OK ist. - Schön. Und dann werden wir diesen ganzen Code auch loswerden. Das erste, was wir tun werden, ist dasselbe, was wir vorher getan haben, wenn wir nur einen Korb bekommen. Und das ist der Korb ist leer, wird standardmäßig auf ein leeres Array. Und lassen Sie uns die Möglichkeit hinzufügen, Dinge auch aus dem Warenkorb zu löschen. Also psi ist Methode. Wir werden die ID bekommen, und das wird mehr Sinn machen, wenn wir die Vorlage machen. Wenn ein Benutzer also etwas aus dem Warenkorb löschen möchte, werden
wir die ID posten und wir werden die Idee bekommen,
hey, entfernen Sie sie aus dem Korb-Array. Und dann schreiben wir den Warenkorb zurück in die Sitzung mit dem entfernten Element. Und das nächste, was wir tun wollen, ist, dass wir eine Art Total liefern wollen. Also lassen Sie uns durch den Korb iterieren und jeden Preis
herausziehen. Also hier werden wir durch den Korb kartieren. Ich wusste, dass ich hier drin saß und sie verstoßen gegen einen Preis. Und dann, wenn wir alle Preise haben, summieren
Sie sie einfach zusammen. Und das wird uns einen Titel geben. Und dann rendern wir alles aus. So gut. Vorlage genannt Korb Punkt HTML aussehen Zweig, die später erstellen wird. Und ich werde ein paar Dinge passieren. Und so werden wir den Korb übergeben ,
so dass wir alles durchlaufen können, da drin. Und wir werden die Summe, die wir auch berechnet haben, frosten. Okay, das sieht schön aus. Lassen Sie uns die Vorlage in der nächsten Lektion erstellen.
45. Basket: Jetzt, da wir einen Korb-Controller haben, lassen Sie uns voran und erstellen Sie eine Vorlage. Also werde ich nur Details Punkt HTML am Zweig greifen,
speichern, das ist Korb Dykstra Beträge auf Zweig im Template-Verzeichnis. Wir benutzen die Semmelbrösel, alles andere kann gehen. Ich werde es Basket Grad-Div mit der Basket-Klasse nennen. Wieder einmal haben wir bereits ein paar nette CSS in. Und das erste, was ist, dass wir alle Fahrräder durchlaufen werden. Und wir werden einen kleinen Filter im Zweig benutzen. Rufen Sie also die Zahlenformat-Methode auf. Und das wird automatisch ein Komma hinzufügen, ich bin Dezimalstellen und es schön aussehen lassen. Und wir werden es auch in dieser Fähigkeit hinzufügen, einige Lüfter zu entfernen. Also hier werde ich eine Schaltfläche hinzufügen, die „Entfernen“ sagt. Und wir werden ein verstecktes von KID hinzufügen. Ja, ja. So jetzt bilden eine Schaltfläche entfernen, sendet eine Fahrrad-ID, so dass in der, wo wir die ID greifen, entfernen Sie sie aus dem Array. Das haben wir. - Schön. Und hey, wir werden eine letzte Zeile hinzufügen. Ich werde nur Titel sagen. Und wieder, wir werden diese kleine Hilfsmethode auf Zweig Zahlenformat nennen. Das funktioniert genau wie Pitch Basiszahlenformat. Es ist mit ziemlicher Sicherheit die gleiche zugrunde liegende Funktion. Okay, und das sieht nett aus. Und das Letzte, was aus der Kasse des Knopfes ist. Offensichtlich wird das nichts tun, weil wir keine Kasse gebaut haben, aber wir werden es später benutzen. Okay, also sieht diese Vorlage gut aus für mich. Versuchen wir es noch einmal mit einem Schrägstrich. Und da gehen wir hin. Wir haben unser Fahrrad. Gehen wir zurück zur Homepage. Und das sind mehr Fahrräder. Und dann bringen wir es nie wieder in den Korb. Ohm, wenn ich Korb buchstabieren könnte, richtig. Und dann gehen wir durch alle drei unserer Fahrräder schön formatiert um das Dollarzeichen anstatt eine Pfundsauna zu verwenden. Skype. Reparieren Sie das. Ok, nett. Und wir können auch diesen Entfernen-Button drücken und es verschwindet aus dem Warenkorb. Ok, reizend. Das einzige, was wir jetzt
wirklich vermissen, ist diese neue Art, zum Korb zu kommen. Also lasst uns das in der nächsten Lektion beheben.
46. basket sehen: Fügen wir einen Link hinzu, damit wir von einem, den wir auf der Homepage sind, zum Warenkorb gelangen können. Also werden wir in Layoutlabor gehen, hat Zweig und wir sagen f Sitzung, die uns Zugriff auf das Sitzungsobjekt von innerhalb Zweig und seine App-Variable hat Lasten über nützliche Stefan. Also, wenn Sie eine Notwendigkeit haben, Zugriff auf eine Variable zu erhalten , dass Sie eine Art globale Variable, die sie in der gesamten Anwendung ist. Sie können oft die on-App finden. Und wir werden sagen, „Korb“. Und dann machen Sie einen Endif. Und dann erstellen wir einen Link zum Schrägstrich Korb. Und wir werden es einfach v Korb nennen. Aktualisieren Sie die Seite. Und jetzt haben wir diesen schönen großen V Basket-Button, der uns auf die Warenkorb-Seite bringt. Perfekt.
47. Installieren des form: Worin der Korb funktioniert, aber jetzt brauchen wir die gestrickte Seite. Und um das zu tun, könnten
wir manuell ein Formular schreiben. Aber das klingt nach viel Mühe, wenn wir Symphonie noch das schwere Heben für uns zulassen können und wir das mit Symphonieform tun können. Also lassen Sie uns voran gehen und tun das Vergnügen erfordern Symphonie Bindestrich Form. Wir lassen das für einen Moment drehen und, und das wird die Formularbibliothek herunterbringen, die wir verwenden werden. Und dann können wir damit beginnen, den PHP-Code selbst zu erstellen.
48. Erstellen einer order: Das erste, was wir brauchen, ist eine Art Order-Entität, die wir die Datenbank beibehalten können, um sie aufzuzeichnen. Und wir könnten das Make-Dienstprogramm wieder verwenden, aber warum bekommen wir nicht einige praktische Erfahrung beim Erstellen einer Entität. Und wir werden faul Weg beginnen, indem wir einfach Product Dot PHP in älteren Dot PHP kopieren und einfügen. Und das werden wir loswerden. Aber wir werden ein unvermeidliches Werkzeug aus dotiertem Drain bringen ist die Array-Sammlung. Also werde ich diesen Punkt nicht mit einer Repository-Klasse einbeziehen, aber wir müssen als Entität verspotten und wir werden ihm einen Tabellennamen geben denn wenn wir es nur älter nennen, würde die Datenbanktabelle Reihenfolge genannt. Und natürlich ist Ordnung ein reserviertes Wort in SQL. Und wenn wir versuchen, eine Abfrage auszuführen, würde
MySQL uns einen Fehler geben, der sagt, verstehe nicht, was hier vor sich geht. Dies ist ein reserviertes Wort. So können wir diese Annotation verwenden, um mitzuteilen, dass es die Migrationsskripte ist, um es Aufträge anstatt Reihenfolge aufzurufen. Mal sehen, was wir noch hier haben. Also werden wir natürlich den Ausweis brauchen. Und wir werden auch einen Namen wollen. Und dann wollen wir auch eine E-Mail-Adresse. Und wir wollen auch eine Postanschrift. Ich denke, dass wir alle nach Bedarf dieses Pixelbild
nicht brauchen, damit wir das loswerden können. Und das andere, was wir
tun müssen, ist, dass wir eine Liste von Produkten haben müssen. Und wir werden einfach Code ausführen und dann reden wir es durch. Also haben wir diese Variable namens Produkte und welche Art von Daten ist das? Zum Beispiel die Angriffe dieses Angriffs. Das hier ist eine Schnur. Nun, dieser hier, es ist ein F-Typ Produkt tendiert t, Es ist eine Reihe von Produkten. Und so können wir dieses Viele-zu-Viele-Tag verwenden, um
Doktrin zu sagen , Beziehung zwischen der Bestellung und der Produkt-Entität zu erhalten. Nun, wenn wir das über Dinge tun wollen, die wir tun müssen, ist es
einen Standardwert zu geben , weil es eine Reihe von Produkten sein wird. Also müssen wir standardmäßig festlegen, es möchte eine Array-Sammlung sein. Und selbst wenn es leer ist, dann werden wir immer noch all diese Werte bekommen. Nun, werde diesen Preis und das Bild loswerden. Aber wir wollen Jungs und befriedigen für die E-Mail. Dann wird diese Beschreibung Adresse sein. Wir werden ein Vertrauen aufbauen. Und dann ist das letzte, was wir tun müssen, fügen Sie Daten , um die Reihe von Produkten zu erhalten, die wir nicht setzen müssen. Ok, nett. Also haben wir jetzt unsere zweiten Enden für die Order-Entität, die wir eine ID, einen
Namen, eine E-Mail-Adresse und eine Adresse haben . Hallo die Person, die den Kauf tätigt. Und eine Reihe von Produkten, die auch die ADA waren.
49. Aufbau des checkout: Jetzt, da wir ältere Entität haben, lassen Sie uns voran gehen und einen Controller erstellen. Das wird unser Kassen-Controller sein. Also werde ich diesen Korb-Controller einfach kopieren und einfügen und wir nennen ihn Checkout-Controller. Eines dieser Dinge ist in Ordnung. Wir müssen auch ein paar neue Dinge einbringen. Aus dem Formpaket sollte Erweiterung Kohle Typ sein. Ich werde eine Reihe dieser Typen einbringen, die vorerst auf benötigtes Textil und dem Textbereichstyp
gegründet wurden. Und dann brauchen wir auch ein paar lokale Pakete. Also müssen wir die Order-Entität einbringen, die wir gerade erstellt haben. Und auch das Produkt-Repository. Wir verwenden immer weiter unten. Also werden wir unsere Unhöflichkeit einen Schrägstrich Kasse als auch haben. Und in der Tat, das wird vorerst tun. Wir können wieder einen Korb bekommen, wie zuvor. Und wir werden auch klappen. Also lassen Sie uns einfach diesen Code auf
die verschieben und wir könnenvoran die verschieben und wir können gehen und eine neue Ordnung Entitäten erstellen, so dass C und C wir gerade erstellt haben. Und dann werden wir dies verwenden, um eine Form mit Symphonien Form Bibliothek zu erstellen. Also rufen wir den Formular-Builder an. Und das wird ein Formular um die n Zustände zu schaffen. Es wird das als Basis verwenden, damit es Validierung hinzufügen und verstehen kann, was los ist. Und dann können wir unser Scheitern hinzufügen. Also werden wir einen Namen hinzufügen. Ich füge eine E-Mail-Adresse hinzu, die Postanschrift. Und das hier wird ein Textbereichstyp sein. Und dann werden wir einen Speicher-Button hinzufügen. Und wir können diesem ein Etikett geben, das besagt, Bestellung bestätigen, anrufen, Formular erhalten. Und dann endlich hier unten, wir den Koch hier in den Korb zählen. Ich will immer noch eine Gesamtsumme. Okay, also lasst uns den Code durchsprechen, den wir hier implementiert haben. So großartig tut New Order Entität. Und das haben wir als Grundlage für unsere Form verwendet. Und dann sagten wir, OK, erstelle diese Form Fabeln und Namen und E-Mail-Adresse und Adresse. Und das sind die Typen, die wir wollen. Und dann haben wir den Submit-Button hinzugefügt. Hier nennt man das Sparen. Und wir haben ein Etikett gegeben. Und wenn wir dieses Formular fertig haben, erstellen
wir eine HTML-Version des Tierarztes. All dies wird von Symphonien Form Component zur Verfügung gestellt und wir werden es
an diese Checkout-Vorlage senden, die wir in der nächsten Lektion erstellen werden.
50. Checkout: Und wir haben unsere Kasse mit unserem Formular erstellt. Lassen Sie uns also voran und erstellen Sie die Vorlage. Verwenden Sie einfach den Korb als Basis, aber wir können das meiste davon loswerden. Speichern Sie einfach als Kasse in HTML, Zweig. Lassen Sie uns die ganze Karotte hier loswerden. Also werde ich diesen Low-Number-Format-Helfer hier wieder verwenden. Und dann wird das Schneiden des Schaums super einfach sein. Wir rufen den Formular-Helfer an und ich werde das Formular übergeben. Also auf Checkout-Controller, wir nannten es Formular hier. Wir hätten diese Form 123 nennen können. Und dann haben wir einfach das Formular 123 hier gestellt. Aber wie wir es gerade Form genannt haben, etwas verwirrend es zum Aufruf von Methode mit der Formularvariablen. Aber das ist eigentlich alles, was wir tun müssen. Also lass uns schlagen, lass uns fortfahren. Checkout-Schaltfläche, die Teilnehmer zum Schrägstrich Checkout und sehen, was passiert. Daher haben wir in der nächsten Lektion einen Fehler bei der Fehlerbehebung erhalten.
51. Testen der Checkout: Wir haben hier oben eine kleine Sache zu klären, und das ist es, was wir zur Entität gehen. Namespace sollte Sammlungen statt Sammlung sein. Aktualisieren Sie das jetzt, ok, perfekt. Das ist also alles magisch von Symphony für uns gebaut worden. Denken Sie daran, alles, was wir getan haben, war im Controller. Wir sagten, wir wollen dieses unterhaltsame schaffen und diese gescheitert. Und Symphonien gehen voraus und erstellen Etiketten und die Felder, Wälder und konfiguriert alle uns scheitern, so dass wir versuchen, es einzureichen. Es hat bereits die grundlegende HTML-Validierung auf E und F, wir füllen hier einige Werte aus und senden sie ein. Nichts wird passieren, weil wir noch keine Handhabung dafür hinzugefügt haben. Aber schon aus der Box, wir haben das gesamte Formular HTML für uns gebaut. Und fließend das Formular zu datieren oder wir müssten tun, ist die Entität im Controller und alle HTML zu
aktualisieren, alle Widgets aktualisieren magisch Wald.
52. Bearbeitung der Bestellung: Nun, da wir ein Formular erstellt haben, lassen Sie uns einige Verarbeitung dafür hinzufügen. Und der erste Schritt ist wirklich CB easy. Wir können einfach eine Anfrage sagen, eine Handle-Anfrage. Macht solch eine Vorform keinen Sinn, ich werde sagen, Formular Handle Anfrage. Und das wird ein Formular anweisen, die eingehende Anfrage zu übernehmen und sie über das Formular zuzuordnen. Also lasst uns einfach wieder Philosoph zeigen, was passiert. Jetzt, wenn ich es einreiche. Es wird alle meine Werte speichern. Schön. Denn wenn die Anfrage eingeht, kartiert alles hier. Weil immer noch nichts wirklich passiert, weil wir die Einreichung nicht gehandhabt haben. Also lassen Sie uns das hinzufügen. Also sagen wir, wenn eingereicht und es ist nur tun, wenn das Formular auch gültig ist. Zunächst werden wir diese Order-Entität aktualisieren, da
wir bis zu diesem Zeitpunkt alle gespeicherten Werte gespeichert haben. Sie wurden in diesem Formular gespeichert. Aber sie sind eigentlich keine ältere Entität. Aber wenn wir dies nennen, erhalten Daten und verkaufen Bestellung, das wird die Bestellung, die wir hier mit dem Namen, E-Mail-Adresse, Adresse aktualisieren. Und das nächste, was wir tun müssen, ist, dass wir die Produkte in den Warenkorb legen müssen. Also werden wir nennen, dass erhalten Produkte, die die Array-Sammlung in der Bestellung aufruft. Und ich werde mit dir reden. Und was ist hier los? Nun, wir schleifen uns durch den Korb und holen jedes Produkt. Und wir verwenden diese Produkt-ID, um die Entität in der Datenbank hier zu finden. Und dann fügen wir diese Entität in die Produktpalette der Bestellung ein. Wenn wir also kostenlose Fahrräder und unseren Korb hätten, würde
es durch die Korbmesser oder die kostenlose GET AID schleifen. Finden Sie die Entität und fügen Sie n. Könnten wir nehmen, weil wir das Fahrrad in einer Sitzung gespeichert, könnten wir es einfach direkt auf die Array-Sammlung hinzufügen wird wissen, denn wenn wir das tun, würde
es denken, dass es eine separate Entität war. Also, wenn ich es hier hinzufüge, müssen
wir wieder aus der Datenbank holen. Diese Doktrin weiß also, dass wir hier kein neues Fahrrad kreieren. Es ist ein vorhandenes Fahrrad in der Datenbank, das dieser Bestellung beigefügt werden möchte. Sobald wir das getan haben, haben wir eine ganze Order-Entität aufgebaut. Und jetzt wollen wir das nur in der Datenbank speichern. Und die Art und Weise, wie wir dies tun, ist, dass wir den Entitätsmanager bekommen müssen, was wir damit tun können. Und dann sagen wir „Behalten“,
was bedeutet, das Audit in der Datenbank zu speichern. Und dann brauchen wir einen letzten Aufruf, flush ist, der die Doktrin anweist, alle SQL zu ruinieren. Es wurde gepuffert. Wenn Sie also mehrere Entitäten in die Datenbank schreiben, könnten
Sie persist auf einer Reihe verschiedener aufrufen, und dann würde keine von ihnen tatsächlich geschrieben werden, bis Sie diese Flush-Methode aufrufen. Also müssen Sie das manuell tun, um zu sagen, OK, jetzt schreiben Sie dies in die Datenbank. Und der Grund ist nur für die Effizienz wegen der Verbündeten Doktrin, wenn Sie versuchen, fünf Dinge hinzuzufügen, würde
Doktrin fünfmal in die Datenbank gehen. Und viel effizienter für Sie, Doktrin zu erzählen wann Sie wollen, dass sie in die Datenbank schreiben. Also, jetzt, da wir haben und wir das speichern, können
wir
eine separate Vorlage zurückgeben . Und lassen Sie uns weitermachen und diese Vorlage auch erstellen. Also wollen wir nur eine super einfache einen Kopf sagt einfach, herzlichen Glückwunsch oder nicht. Also, das ist einfach sparen. Dies hat Bestätigungspunkt HTML, Zweig. Und ich werde einfach so etwas sagen, wie wir es gesehen haben. Schreibweise es falsch und geh zurück und repariere das in einer Minute. - Ja. Ok, nett. Jetzt und gehen wir zurück zu dieser Seite. Und was wird passieren, wenn wir das einreichen? Es wird eine Ära geben. Kannst du raten, warum? Ok, perfekt. Also haben wir hier einen Fehler, weil diese Tabelle nicht wirklich existiert. Wir erstellen die Entität, die wir nicht in der Datenbank erstellt haben. Also lass uns das in der nächsten Lektion tun.
53. Den orders Migranten: Und wie erwartet, haben wir diesen Fehler bekommen, weil wir die Datenbanktabelle noch nicht erstellt haben. Also lasst uns weitermachen und das tun. So wie wir es vorher getan haben. Wir werden PHP wurde gestrichelt Konsole laufen. Machen Sie die Migration neben der der der Ersteller. Eine zweite Migrationsdatei. Ja, also wird es schaffen, sind diese Tabellen von Li. Und dann, um diese Lehre auszuführen, Doppelpunkt Migrationen, Doppelpunkt migrieren. Schön. Wenn wir jetzt auf Datenbank schauen, wird sagen, wir haben unsere älteste Tabelle. Und weil die Doktrin die Verwaltung der Beziehung zwischen den Bestellungen und Produkten. Also lassen Sie uns diese Bestellung Produkttabelle mit einer Verbindung zwischen den beiden gleichsetzen. Aber wir brauchen uns keine Sorgen darüber zu machen, dass die Lehre alle Ausländer behandelt. Lassen Sie uns versuchen, unsere Bestellung einzureichen. Aber wir haben unseren Bestätigungsbildschirm so großartig. Und hier ist unser Befehl. So gehen sind ältere und in Ordnung Produkte. Wir können sehen, dass es die beiden Bikes verbindet, die wir dort haben. Das ist also perfekt. Nur ein paar Bereinigungsaufgaben, die wir in der nächsten Lektion erledigen werden.
54. Nachgehen, welche Checkout aufgehen: Das letzte, was wir hier tun wollen, ist den Korb nach unten, denn obwohl wir die Olga eingereicht haben, eigentlich alles noch im Korb. So können wir das wirklich leicht machen. Und Checkout-Controller, sobald der älteste eingereicht wurde. Und wir haben bereits Sitzung und hier oben gebracht, so können wir einfach sagen Session Set Korb. Und wir konnten es einfach lösen, brachen es auch nur auf ein leeres Array setzen. Und jetzt, wenn wir
den Checkout-Prozess wieder durchlaufen , perfekt. Also wurde die Bestellung eingereicht. Wir haben eine neue Zeile in unserer Bestelldatenbank und es löschte Dan eine Sitzung, so dass die Fahrräder und nicht mehr in den Warenkorb.
55. E-Mail- und Transportebenen: In diesem Modul werden wir uns das Senden von E-Mails in Symphonie ansehen. Aber bevor wir das tun, möchte ich nur auf diese Idee der
Verwendung einer Transportschicht eingehen und wirklich klar sein, was das ist. Also die Transportbibliotheken wirklich, wer die E-Mail senden wird. Also, wenn Sie über die Symphony-Mail nachdenken, eine Komponente, die irgendwie wie Ihr E-Mail-Client ist. Wie könnten Sie Outlook oder Thunderbird oder einen webbasierten Client wie G-E-Mails, Web-Interface oder vielleicht die Mail-App auf Ihrem Handy haben. Aber das macht nicht das eigentliche Senden der E-Mails. Sie müssen eine Art von E-Mail-Konto haben. Und die Software interagiert nur mit diesem E-Mail-Konto. Und es ist das gleiche mit Symphonie-Mailer ist, dass das mit der Sache
interagieren wird , die tatsächlich die E-Mails sendet. Und es gibt eine Reihe von Optionen, die wir tun können. Wir können einfach Standard-E-Mail-Konto verwenden oder wir können verwenden, was als Transaktions-E-Mail-Service bezeichnet wird. Das ist also eine Art API, mit der wir eine Verbindung herstellen und sagen, okay, diese E-Mail an diese Person gesendet hat. Und es heißt transaktional weil Sie dazu neigen, sie einzeln auszusenden, im Vergleich zu sagen, eine Mailingliste, wo Sie gehen und sagen würden, okay, ich möchte diese eine E-Mail an all diese Leute senden. Transactional neigt dazu, eine zu Zeit mit einer API zu registrieren. Nun, in Bezug auf den Erhalt der E-Mail an die Person, E-Mail ist kein perfektes System und einige gehen verloren, einige unabhängige Spam. Und im Allgemeinen könnte der Grund, warum Sie mehr für
einen transaktionalen E-Mail-Dienst bezahlen , anstatt nur
Ihr E-Mail-Konto zu verwenden , ist, dass es besser ist und Spam vermeidet. Oder es könnte noch schlimmer sein. Es ist gut, diese Dinge zu testen, weil er es nie wirklich nicht sagen kann. Wir haben eine Reihe von Transportschichtoptionen in Symphony. Es kommt mit, standardmäßig wird nur SMTP erhalten. Das ist also die normale Art und Weise, wie Sie
einen E-Mail-Client konfigurieren würden , gehen Sie zu Ihrem E-Mail-Konto, erhalten Sie die Einstellungen und es gibt Ihnen einen Benutzernamen und ein Passwort und wahrscheinlich einen IMAP- und SMTP-Server zu verbinden. Und Sie können auch Gmail verwenden. Gmail etwas anders, obwohl es nur ein normales E-Mail-Konto ist. Es gibt eine separate Bibliothek, die sieben Tage zur Verfügung stellt, wenn Sie Gmail verwenden möchten. Und dann gibt es eine Reihe von transaktionalen E-Mail-Diensten. So Dinge wie Post, Waffen, Gitter senden, gestempelt. Amazon AWS hat seine eigenen E-Mail-Service-Kosten, einfach Mail-Service und männliche Schimpanse als auch. Jetzt haben wir männlichen Schimpanse, wir reden spezifisch über Dorn. Also könnten Sie einen männlichen Schimpansenlager haben und diesen Newsletter auf Ihre Mailingliste schreiben. Aber es gibt einen zusätzlichen Add-on Transaktions-E-Mail-Dienst namens Mandrill , der zusätzliche Geld kostet, das Sie auch auf Ihrem Konto hinzufügen können. Es ist also nicht die reguläre Mail-Schimpansen-Mail-Liste Sache, es ist der zusätzliche Dorndienst, den sie zur Verfügung stellen. Alle von ihnen sind gut. Ich mag Nagelpistole Person, aber wenn Sie
wollen , um Transaktions-E-Mail-Service gehen, dann machen Sie einfach ein wenig Forschung und sehen, welche für Sie arbeitet. Oder Sie können einfach ein reguläres E-Mail-Konto verwenden, wie wir es in diesem Beispiel tun werden.
56. Das E-Mail-Paket installieren: Um E-Mails zu versenden, müssen
wir das Mailer-Paket installieren. Also lasst uns weitermachen und das tun. Wir werden einfach tun Komponist benötigen Sinfonieschrägstrich Mila. Wir geben das eine Minute, um das zu übernehmen. Ich werde die mittlere Bibliothek herunterbringen und dann können wir mit ihr
arbeiten und anpassen und implementieren. Ok, perfekt. Wir sind bereit, E-Mails zu versenden.
57. Den E-Mail-Service erstellen: Lassen Sie uns fortfahren und konfigurieren Sie den E-Mail-Dienst. Also gehen wir in unsere Akte und dann haben wir diesen Mailer, die Sonne hier. Und die Form davon hängt davon ab, welche Transportschicht verwendet, in diesem Fall verwenden wir nur den grundlegenden SMTP-Server. Sie müssen also Ihre SMTP-Details besprechen, ein Modul stylen. Oder Sie können einen anderen Service nutzen, wenn Sie möchten. Und es nimmt die Form des Benutzerkennworts an. Und dann die SMTP-Details und der Port. Jetzt werde ich voran gehen und diese gegen meine wahren Details austauschen. Aber offensichtlich wollen Sie stattdessen Ihre persönlichen Daten hier reinlegen.
58. Senden einer Bestätigungs-E-Mail: Nachdem wir nun den E-Mail-Dienst konfiguriert haben, lassen Sie uns den Checkout aktualisieren, um ihn zu verwenden. Also müssen wir hier noch mehr Klassen einbringen. In der Mail-Schnittstelle. Wir werden auch die Zweig-Integration
einbringen , weil wir wollen, dass es schön ist und Vorlage es. Und dann lasst uns Sinfonien Verdrahtung benutzen, um das Festland zu bringen. Und dann werden wir den Korb klären, kurz bevor wir das machen. Wir rufen die E-Mail-Bestätigung an. Und ich werde in der Reihenfolge passieren. Und das Myelin. Jetzt lassen Sie uns Funktionen und wir sind dabei, nach unten zu gehen und es zu erstellen. Also lasst uns das jetzt tun. Es ist eine private Funktion, weil wir es von hier aus aufrufen. Und wir nennen es senden E-Mail-Bestätigung. Kann einen Befehl annehmen. Und eine Mailer-Schnittstelle. Sag mal, neu. Beginnen Sie, dies zu konfigurieren Sie es von meiner Domain senden. Und wir gehen zu zwei, und wir werden das eine Kleiderfunktion benutzen. Und wir kauften und wir konnten einfach die E-Mail-Adresse als String reinlegen. Aber das wird besser sein, weil wir auch den Namen geben können. Also holen wir die E-Mail raus. Wir kriegen auch den Namen. Betreff. Ich werde sagen, ältere Bestätigung. Und ich bin, weil wir heute eine Vorlage verwenden. Jetzt geben wir die Liste weiter. E-Mail solche Reihenfolge Punkt HTML Zweig wieder existiert nicht. Und dann wird der Kontext immer in einem Zweig Variablen übergeben. Also nur älter da drin. Und das ist erledigt. Und dann werde ich sagen, meine, lasst uns diese E-Mail schicken. Okay, das ist also der erste Teil, der gemacht wurde. Lassen Sie uns die E-Mail-Vorlage in der nächsten Lektion erstellen.
59. E-Mail-Vorlage: Jetzt haben wir unsere Sandy-Fehlfunktion. Lassen Sie uns voran und erstellen Sie eine Vorlage. Und dieses Mal werden wir nicht verlängern, weil es eine E-Mail ist. Lassen Sie uns einfach speichern, wie bestellt, unser HTML-Zweig. Und wir haben in einem Verzeichnis platziert und es war E-Mails und Sesamlinie, danke für Ihre Bestellung. Und dann können wir sie auflisten. Unten Hand wird sagen, dass wir bestätigen werden. Die Bestellung wurde versandt. Jose für Wasser in allen Produkten. Sagen Sie pro Objekt Dopamin. Ok. Das sieht gut aus. Ziemlich einfach, ziemlich einfach. Aber es wird eine Auftragsbestätigung mit
der Bestellnummer bilden und die Produkte, die sie gekauft haben, auflisten. Toll, also lasst uns das in der nächsten Lektion testen.
60. Testen der E-Mail-Bestätigung: Wir haben alle Dienste und Umgebungen für die E-Mail konfiguriert. Also lasst uns voran gehen und das testen. Zunächst einmal fügen wir einfach ein paar Fahrräder in unseren Warenkorb. Da gehen wir hin. Großartig mit Godfrey Bikes jetzt Korb auf einen Kauf, der in meine Daten füllen würde. Und wir werden bestätigen, dass Bestellanfragen nicht super knackig sind, denn es wird mit dem E-Mail-Service sprechen. Oder wenn Sie dies in einem großen kommerziellen Projekt tun würden, würden
Sie dies asynchron tun, aber ich habe eine E-Mail in eine Warteschlange gestellt und jemanden später damit umgehen lassen, aber das funktioniert vorerst gut. Wir haben eine Bestätigung. Danke für Shaphan war und wenn ich meine E-Mails öffne, wir jetzt gut, es ist die ganze Gestalt oder die Nummer sieben und es hat die Fahrräder. Das habe ich auch aufgehoben. Also, Alex, perfekt. Nun kann der Fall sein, wenn diese E-Mail nicht sofort in Ihrem Posteingang erscheint, müssen
Sie zu Ihrem Spam-Ordner gehen und einen Blick in ihre E-Mail werfen. Git's hat, die meisten Leute werden wissen,, ich denke, Sie sind einfach nicht sehr zuverlässig in diesen Tagen, weil die Karte Spam-Schutz, und vor allem, wenn Sie nicht bekommen, dass E-Mail eingerichtet wirklich gut und wirklich echte Anbieter, dann Sie könnte in einem Spam-Filter gefangen werden. Und die Art und Weise, wie sie zu vermeiden, ist einfach necken ihn hart, teure E-Mail-Anbieter leider. Aber hoffentlich sollte in der Lage sein, diese E-Mail irgendwo zu finden und sehen, wie der Mailer funktioniert.
61. Letzte Gedanken: Herzlichen Glückwunsch, dass es bis zum Ende dieser Klasse geschafft hat. Wenn Sie mitprogrammiert haben, haben
Sie Ihren ersten Symphonie-E-Commerce-Store gebaut und wissen jetzt, wie Symphony funktioniert hat, und ich würde es lieben, dass Sie Ihren abgeschlossenen Code mit der Klasse teilen. Viel Glück und glückliche Entwicklung.