[Musikwiedergabe] ERIC Ouyang: Hey, jeder. Willkommen. Dies ist Erstellen dynamischer Web Apps mit Laravel. Mein Name ist Eric Ouyang. Ich bin ein College-Student studieren Sozialkunde mit einer sekundären in Informatik, und ich lebe in Adams Haus hier in Harvard. So Laravel, bei seiner Kern, ist ein MVC Web-App-Framework. So mögen, was Sie Jungs haben wurde mit CS50 Finanzen zu tun, Laravel ist ein Framework, ermöglicht Sie dynamische Web-Anwendungen zu erstellen. So können Sie es in einigen Sinnen denken als Erweiterung der Art des Materials Sie haben in CS50 getan Finanzen, sondern ein System, das ist viel robuster, viele eleganter in mancher Hinsicht, und stellt eine Menge von Funktionen für Sie ziemlich komplex zu bauen Web-Anwendungen. Also lassen Sie uns über einige gehen der Hauptmerkmale, und dann werden wir in ein tauchen Beispiel für den Aufbau einer Blog Anwendung mit Laravel. Damit wird eines der ersten Dinge, die unterscheidet es von MVC Art der Arbeit Sie habe mit CS50 getan ist es ein ORM-Engine enthält. So ORM steht für Objekt relationales Mapping. So diese Weise können Sie bauen eine Schicht der Abstraktion zwischen der Datenbank und Ihre Steuerungen. In CS50 Finance, wo also im Gegensatz zu die sie machen Anfragen, die ORM-Schicht ermöglicht es Ihnen, abstrakt, dass ab und zu erstellen Modelle, die mächtiger als es Sie können direkt mit SQL-Abfragen. Eine andere Sache, die wirklich ist hilfreich vererbbar Vorlagen. So werden Sie in CS50 Finanzen bemerken, Sie am Ende umgeschrieben, eine Menge Dinge, wo legt man könnte potenziell Wiederverwendung Dinge, die Sie nicht in der Lage sind. Also hier in Laravel, die Sie verwenden können, was wie die Klinge Template-Engine bekannt ein Master-Layout erstellen. Und von dort, die Sie übernehmen können so dass die Sub-Templates kann tatsächlich sind Elemente innerhalb dass größere Basisvorlage. Migration. Das ist also eine ziemlich Standard-Funktionen auf die meisten modernen Web Application Frameworks. Also das können Sie darstellen Datenbankschema Änderungen im Code. Also, ohne zu sagen, phpMyAdmin, können Sie tatsächlich diese Migrationen erstellen wo Sie Betreiber der Datenbank Schema-Änderungen in Code direkt. Und das können Sie besonders zu-- Wenn Sie mehrere Mitarbeiter haben auf derselben Bahn application-- verfolgen diese Änderungen, sagen in GitHub oder einem anderen Repository. Also das ist wirklich hilfreich und verringert die Notwendigkeit , sagen wir, übergeben um eine Menge von SQL-Dumps. Und schließlich ist Composer etwas wirklich, wirklich nützlich , mit dem Sie andere zu bedienen Code der Menschen zu genial Dinge zu tun. So Laravel als strukturiert mehrere Komponisten Pakete. So sagen, wenn Sie bringen wollte in einem Authentifizierungspaket oder wenn Sie wollte in einigen bringen Art von Generator-Skript oder einem Admin Schnittstelle, die Sie einstecken und spielen können diese Komponenten mit Composer. Also fangen wir an. Haben Sie Fragen, von Ihnen Jungs, bevor wir loslegen? Keine Fragen? Kühle. Der erste Schritt ist, Installation Komponist. So Composer ermöglicht es Ihnen, Verwaltung von Abhängigkeiten, ob es die Laravel Rahmen oder eine andere dritte Partei-Erweiterung. Der erste Befehl erlaubt Sie Komponist downloaden, und der zweite Befehl ermöglicht es Ihnen, verschieben Sie sie in Ihrem lokalen Ordner bin so dass Sie Composer ausführen direkt durch den Kontakt. Danach gehen Sie vor und erstellen Sie eine neue Laravel Projekt. Wir sind eigentlich los, um verwenden einige Beispiel-Code dass ich zusammen um diesen Blog zu erstellen. Aber wenn Sie den Start sind Kratzer, Sie diesen Befehl verwenden würde hier oben Komponisten erstellen Projekt Laravel Slash Laravel und dann der Name des Projekts. Und das wird auch all die Verteilung Code für die Gründung eines neuen Laravel Projekt. Also für Ihre CS50 Abschlussarbeiten, werden Sie wahrscheinlich wollen, um diesen Befehl zu verwenden. Aber wir werden, um mit diesem zu starten. Also, wenn du getan hast dass Sie bekommen werden eine ziemlich umfangreiche Anzahl Dateien in blog50. Also lasst uns einfach durchgehen einige dieser Komponenten. Sie werden auf diesem Weg feststellen, Verzeichnis gibt es eine App-Ordner. Innerhalb des Anwendungsordner starten, gibt es ein paar hilfreich Ordner. Zu beachten ist, mit zu beginnen ist dieser Ordner config. So setzt dieser sich wie Ihre Web-Anwendung ist werde, sagen wir, zu authentifizieren Personen oder Geld Dinge oder eine Verbindung zur Datenbank. Und was ist wirklich hilfreich ist, dass Laravel ermöglicht Ihnen die Einrichtung unterschiedlicher Entwicklungsumgebungen. Also, was wir hier tun, ist, wenn wir gehen unter dem lokalen Ordner, es gibt eine database.php Datei. Und Sie werden hier feststellen, dass wir Einrichtung einer MySQL-Verbindung, die ermöglicht es Einzelpersonen, verbinden mit dem MySQL-Server, der ist direkt am CS50-Appliance. Und wir sind zu einer Datenbank verbinden dass ich aufgerufen Blog50. Lassen Sie uns also wirklich voran gehen und führen Sie den Arbeits Version davon, nur um ein Gefühl für die Get Anwendung, die wir bauen aussieht. So habe ich eine Kopie Diese Blog50 abgeschlossen. So Laravel tatsächlich hat in einem Server eingebaut dass Sie direkt ausführen kann von der Kommandozeile. Dies ist also ähnlich der PSet vor, wenn Sie tatsächlich bauen Sie Ihre eigenen Server in C So haben sie eine in so gebaut dass Sie Ihre Laravel Anwendungen laufen direkt von der Kommandozeile. Also, wenn wir tun, php Handwerker zu dienen, diese einen Entwicklungsserver zu starten auf Port 8000. Also, wenn wir zum lokalen Host 8000, werden Sie feststellen, dass, hey. Wir haben in unserem Blog und läuft. So Laravel hier erzeugt die Titelseite in unserem Blog. Sehr einfache Anwendung. Aber es gibt ein paar wirklich nette Features darin, dass sie unter der Haube. So ist die Blog-Anwendung unkompliziert. Wenn wir einen Beitrag zu erstellen wollte, Wir können auf diese Schaltfläche klicken. Wir können sagen: "Hey, jeder. Dies ist ein wirklich Spaß Seminar "zum Beispiel. Und etwas zu schreiben hier unten. Text hier. Wenn wir auf Submit, werden Sie feststellen, dass unser neuer Blog Beitrag wurde auf die hinzugefügt Titelseite des Blogs. Wenn wir wieder hierher kommen, werden Sie feststellen, dass es wurden einige Kommentare bereits auf dem Blog. Wenn wir also nach unten scrollen, werden Sie feststellen, dass Jonathan Tan sagt, dass er war sehr beeindruckt von diesem Post fasziniert. Also werden wir in, wie Objekt gelangen, relationales Mapping erlaubt Sie, diese Beziehungen in zu tun ein ziemlich nahtlos als gut. Kühle. Haben Sie Fragen zu Funktionalität von, was wir zu bauen? Kühle. Also lassen Sie uns beginnen mit tatsächlich Erstellung der Datenbanktabellen. So erinnern daran, dass in CS50 Finanzen, Sie legte eine Tabelle zusammen für die Benutzer sowie für die Aktien in Ihrem Portfolio. So, wie wir bereits erwähnt, was wir in Laravel ist etwas, wie Migrationen bekannt. Also, wenn wir wieder in die Verteilung Code hier, der erste Befehl, der ist hilfreich, dass Laravel bietet Ihnen ist dieser Befehl migrieren. So können wir PHP-Handwerker migrieren: machen. So ermöglicht es uns, eine Migrations erstellen. Und dann werden wir möchten um eine Migration zu erstellen genannt create_posts_table, die gehen Wo werden wir zu gehen ist die Speicherung unserer Blog-Posts. Und Sie werden hier feststellen, dass es läuft durch einige Code, der tatsächlich erzeugt eine Datei mit ein Zeitstempel auf sie. Also, wenn wir gehen und schauen Database, wir werden unter Migrationen merken dass es erstellt ein leere Datei für uns die hat Standardcode mit dem Namen dass wir angegeben, erstellen Beiträge Tisch. Und es hat zwei Funktionen darin. Up ist das, was wir, wenn die ausgeführt werden soll Migration in die Datenbank übernommen. Und unten ist, was wir tun werden wenn wir wollen, um eine Migration rückgängig zu machen. So, hier lassen Sie uns beginnen mit Schreiben dieser Migration. Es gibt also eine Klasse hilfreich in Laravel genannte Schema. Wir werden also zu laufen Schema :: erstellen. Und wir werden zu erstellen eine Tabelle namens Beiträge. Und hier mit Hilfe einer Funktion wenden wir diese. Und innerhalb von hier, wir gehen, um tatsächlich geben Sie die Inhalte unserer Tabelle. Wir werden eine ID zu erstellen, Das ist die automatische Inkrementierung. Darüber hinaus werden wir um ein Feld zu erstellen, dass stellt den Titel unserer Blog-Post. Wir werden auch, um ein Feld zu erstellen zum Speichern der Text unserer Blog-Post. Und schließlich werden wir einige Zeitstempel speichern denn wenn unser Beitrag erstellt wurde und wenn es aktualisiert. Und für sich, ist es ziemlich einfach. Alles, was wir wollen, ist Drop die Tabelle, die wir erstellt haben. Großartig. Haben Sie Fragen? So, jetzt, wenn wir weitermachen und-- eigentlich lokalen Host, Lassen Sie mich zu löschen, was wir früher hatten. Zum Datenbanken. Ich werde zu löschen, was wir früher hatten. Löschen Sie diese und erstellen eine neue Datenbank Blog50. So, jetzt, was die magische Teil ist hier, dass wir können diese Migrationen direkt anwenden auf die Datenbank über die Befehlszeile Tool. Also, wenn wir tun, php Handwerker migrieren, Sie werden bemerken, dass, hey. Es ist die Migrationstabelle erstellt, die wir einen Blick auf ein wenig zu nehmen, und es ist angewendet diese erste Migration. Also schauen wir uns Blog50, werden Sie feststellen, dass es für uns erstellt zwei Tabellen. Zunächst ist diese Migrationen Tisch. Wenn wir also sehen diese, werden Sie feststellen, dass Diese Tabelle ist recht einfach. Es ist nur, dass, hey. Wir haben diese Migration angewendet. Wir gehen zurück und betrachten Sie Beiträge. Sie werden feststellen, dass die Struktur Genau das haben wir sie gebeten hatte. Wir haben einen automatischen Identifikation. Wir haben eine Zeichenfolge zum Speichern der Titel, und ein Textfeld zum Speichern der Inhalte. Großartig. Kühle. Haben Sie Fragen zu Migration Arbeit, wie wir sie an? Nein? Kühle. So, jetzt werden wir weitermachen und tatsächlich schaffen Sie das Modell. So einen Pfosten Modell erstellen möchten wir, dass speichert eine Abstraktion der Datenbank. Also anstatt sich MySQL-Abfragen direkt, wir werden zu erstellen. Also müssen wir eine erzeugen Ordner im hier genannten Modelle. Und innen hier, wir sind zu gehen eine Datei namens post.php. Innerhalb dieser PHP-Datei, wir werden zu erstellen eine Klasse nach der beredte erstreckt. Eloquent ist der Name des ORM Motor, Laravel bietet. Und hier können wir erwarten, dass Sie tatsächlich benötigen, um einen Code zu schreiben. Wir werden einige schreiben Hilfsfunktionen später. Aber aus der Box, wird dies bereits erkennen, was in der Datenbank und wir können zugreifen, also den Text unserer Blog-Post oder den Titel, und direkt zu erstellen Zeug so ziemlich kein Code zu löschen. Also das ist eine der zauberhaften Komponenten. Und Wind einmal dieser Klasse mehr vollwertige, wir werden Informationen zu enthalten, was es ist im Zusammenhang, so die Kommentare. Auch eine Funktion so können wir wirklich direkt zu der URL von einem Blog-Post-Seite. Kühle. Haben Sie Fragen dazu? Nein. Kühle. So, jetzt, wenn wir unser Modell haben wir wollen einen Controller, der es schaffen in der Lage, mit diesem Model-Schnittstelle, und anschließend die Datenbank. Wenn wir also einen Blick auf BlogController, werden Sie feststellen, dass es gibt nicht viel hier und jetzt. Alle es ist ein Index-Funktion dass generiert die Homepage, aber ohne etwas zu dort noch anzeigen. So die erste Funktion dass wir gehen, um zu erstellen ist eine, die uns erlaubt um einen Blog-Post zu schaffen. So werden wir ein zu erklären neue Funktion newPost. Und innen hier einfach, wir gehen um das Layout der Seite eingestellt sein ein Render Version, wenn Sie von CS50 erinnern, dieser Vorlage genannt blog.new, die wir werden in ein wenig zu schaffen. Sie werden hier in Zeile sechs Beachten Sie, dass wir diese Variable festgelegt, das Layout. Und wenn wir einen Blick am Ansichten Ordner, gibt es einen Layouts Ordner, die enthält eine sehr einfache HTML-Datei. Und der Anmerkung, werden Sie feststellen, dass wir diesen Container haben hier die Inhalte ergibt. So Innere unserer Vorlage was wir tun werden ist zu erstellen, was los zu sein direkt in diesem Layout ersetzt. Also sagten wir, dass wir zu machen möchten eine Vorlage namens blog.new. Aber innerhalb der Blog, gibt es noch nicht die neue Vorlage. So werden wir ein erstellen Datei mit dem Namen new.blade.php. Das zeigt, dass Laravel Diese PHP-Datei sollte mit der gerendert werden Klinge Template-Engine. Das ist also eine ziemlich einfache Datei. Es wird das Formular, mit dem sein wir tatsächlich in einem Blog-Eintrag hinzufügen. Also die Magie hier aus die Vererbung ist, dass, hey. Wir wollen, dass die angeben Abschnitt, dem Inhaltsbereich hier, die abgegrenzt ist vonsection undstop. Also, was ist dazwischen hier an gehen in die Master-Layout ersetzt werden. Und hier, was wir wollen, ist sehr erstellen Sie einfach eine neue HTML-Datei. Lassen Sie einfach einen schnellen Titel. Fügen Sie einen Blog-Post. Und darin sind wir werde ein Formular erstellen. Diese Form wird, um eine Aktion zu haben. Und das wird etwas sein, dass wir ersetzen in später und wir werden sehen, wie Routing passt in hier. Aber wir sind gerade dabei, für jetzt zu definieren dass diese geht zu einem URL mit dem Routen von erstelleBeitrag. Und das wird Verfahren zur Post haben. Im hier, wir gehen zwei Felder haben. Div class = "Form-Gruppe". Wir sind mit dem Bootstrap CSS Bibliothek freundlicherweise von Twitter zur Verfügung gestellt. So werden wir zwei von diesen zu erstellen. Also das erste Eingang werde der Titel sein. So input name = "title". Class = "Formcontrol". Type = "text". Ich werde einen Platzhalter = "Titel" hinzufügen. Und dann die zweite ist wird ein Textfeld sein. Name = "content". Class = "Formcontrol". Und Platzhalter = "hier schreiben". Dort gehen wir. Schließlich werden wir zu gehen Eine schnelle Submit-Button. Type = "submit" class = "btn btn-primary". Das sind also alle Merkmale der Bootstrap so dass diese gelegt werden können in einer Weise, dass es Beute für den Benutzer, anstatt bloßem HTML. Also haben wir den Controller hier definiert haben. Wir haben ein sehr einfaches View definiert. Was aber noch fehlt, ist das Bindegewebe. Also an dieser Stelle, Laravel hat keine Ahnung, wie wir werden tatsächlich besuchen Sie diesen Controller. Das ist also in eine definierte Datei mit dem Namen routes.php. Und gerade jetzt, haben wir einen Weg. Das ist, wenn wir gehen, um die Home-Pfad für diese Website, es geht zu machen der Index-Controller. Hier also, was wir tun müssen, ist zu implementieren ein neuer Weg für uns, einen Beitrag erstellen. So verwenden wir diese Methode zu erhalten, die angibt, dass, wenn ein Benutzer versucht, erhalten diese page-- spezifisch die Post Slash neue page-- was wir tun werden ist mit dem Controller aufrufen BlogController neuen Beitrag. Die eine, die wir gerade erstellt. Und dann werden wir um es als newPost Pseudonyms gestattet. Wir werden ein weiteres erstellen Funktion in ein wenig. Aber was ist hier unter der Schlüssel ", wie" ist das, was Wir können innerhalb ersetzen unsere Blade-Vorlagen. So jetzt, lasst uns eigentlich auch sagen Route. So werden wir auch einen Controller zu erstellen damit wir diese Stellen zu schaffen. Also, wenn ein Benutzer Beiträge zu der Seite Beitrag Slash neues, was wir tun werden ist verwendet einen Controller, wir werden in Kürze erstellen genannt BlogController bei erstelleBeitrag. Und wir gehen, um Alias- dies mit als erstelleBeitrag. Kühle. Haben Sie Fragen? Kühle. Also lassen Sie uns laufen, was wir bisher haben. Also, wenn wir tun, php Handwerker zu dienen, wir werden sehen, viele Fehler. So wie es aussieht haben wir eine Syntax-Fehler auf Strecken Linie 27. Ah. Fehlt ein Semikolon. Also, wenn wir gehen, um 8000, Sie werden nichts sehen hier noch. Das ist also die Standard-Homepage. Aber wenn wir gehen, um zu Posten Slash neue, hey. Es wird die Form, die wir gerade erstellt haben. Im Moment haben wir nicht die Funktionalität implementiert der, wenn wir drücken Sie die Schaltfläche Senden. Wenn wir also auf die Schaltfläche Submit Taste, es wird eine Fehlermeldung führen. Aber wir werden, um Code geht, dass gerade jetzt, genau das, was wir wollen, wenn ein Benutzer tun legt dieses Formular. Also lassen Sie uns tun. Zurück zum Controller-Datei. Was wir tun werden, ist Umsetzung dieser neuen Funktion dass ermöglicht es uns, einen Beitrag erstellen. Deklarieren neue Funktion. Public function erstelleBeitrag. Und diese Funktion wird eine sein wenig anspruchsvoller als das, was wir hatten vor. Aber Sie werden hier zu sehen, dass wir nicht werde eigentlich schreiben jede SQL. Das ORM, die Eloquent ORM, wird zu ermöglichen uns, dies zu tun in einigen Möglichkeiten einen eleganteren Weg. So werden wir einen neuen Beitrag erstellen. Und hier sind wir Instanziieren eines neuen Objekts aus dem Modell, das wir gerade erstellt, die Post-Modell. Und was wir tun werden eingestellt ist das title-Attribut dieses mit etwas dass wir vom Server. So ist dies ähnlich wie wir in CS50 Finance hatte vor wo wir tun würden, mit dem Super- Globale Beitrag auf der Suche nach Titel. So Laravel bietet einige Hygiene und so weiter mit dieser Hilfsfunktion. So würden wir es vorziehen, diese stattdessen dieser sehr grundlegenden rohen Form von PHP. Und dann, was wir tun werden gesetzt der Inhalt es Eingang bekommen Gehalt. Wir sind tatsächlich zu wickeln dies in einer hilfreiche Funktion PHP bietet nl2br genannt, die dreht sich neue Linien, nls in brs, Pausen, so dass wir tatsächlich haben kann verschiedene Absätze innerhalb dieser Gruppe. Und schließlich, was wir zu tun ist, speichern Sie diese Post. Also haben wir die Funktion aufrufen speichern Sie an diesem Modell. Wir werden den Posten zu speichern. Und schließlich, was wir tun werden wird dem Benutzer speziell umleiten auf der Route, die wir zu gehen erstellen kurz, alias von viewPost. Und wir werden in den Argumenten übergeben ID, wobei die ID des neuen Post. Großartig. So, jetzt, wenn wir tatsächlich zu gehen, und führen Sie diese. Wir werden einen neuen Beitrag hinzufügen. Nehmen wir an, dies Seminar 50. Und sagen, sicher. ADSL. Was Auch Immer. Irgendeine Art von Inhalt. Und abschicken. Und wir werden feststellen, dass, hey. Strecken, die nicht definiert ist. Aber wenn wir einen Blick auf phpMyAdmin und suchen Sie nach, ob unsere Funktion etwas getan. Schauen Sie sich Blog50 Beiträge. Wir werden bemerken, dass, hey. In der Tat haben wir nur noch zu einer Blog Post mit den Zeitstempeln, wie angegeben. So, jetzt gehen Sie zurück und tatsächlich schaffen lassen diese andere Funktion in unserer Controller, insbesondere die viewPost Controller. So public function viewPost. Hier also, was wir tun, sondern der mit leeren Klammern, wir werden in die ID übergeben wollen Die Post, die wir schaffen. Und von hier aus, was wir tun werden ist eigentlich Abfrage der Datenbank für sie. Also, wenn wir schreiben, es gibt eine Funktion, die aufgerufen Finden Sie, dass können wir es durch ID abfragen. Genauer gesagt, eigentlich, wir sind zu gehen verwenden eine alternative Version davon heißt Finde oder Fail, die uns erlaubt um aus dieser Funktion zu verlassen, eine Ausnahme, wenn der ID- geben wir in nicht existiert. Und dann werden wir etwas tun ähnlich dem, was wir haben früher wo wir den Inhalt von dieser Seite zu sein die gerenderte Version dieser neuen Ansicht das werden wir schaffen, blog.view. Und wir werden in übergeben es-- genau wie in der CS50 machen function-- ein Wörterbuch von Variablen. Die Schlüssel dieses assoziativen Arrays werden Variablen in der Vorlage. So werden wir nach der Post zu tun. So passieren indirekt die Post, dass wir aus der Datenbank abgefragt haben. . Nun, was wir zu gehen zu tun ist, diese Ansicht zu erstellen so dass wir tatsächlich sehen die Blog-Posts, die wir aufgebaut haben. So werden wir ein erstellen Datei mit dem Namen view.blade.php. Also innerhalb dieser Vorlage, was wir tun werden zusammen eine einfache Seite stellen, dass ermöglicht es uns, den Inhalt anzuzeigen. Also haben wir Sektion tun, das ist, bevor Inhalt. Stopp. Und was wir innerhalb hier zu tun ist schreiben einige HTML, um diese Seite anzuzeigen. So werden wir es mit einer aparten wickeln neue HTML5-Element namens Artikel. Und hier werden wir einen Header, wo haben wir werden nur eine h1, wozu die Post-Titel. Also hier, wenn wir uns diese Doppel geschweifte Klammer-Notation, Dies wird im Wesentlichen zu tun PHP echo Post-Titel. Also ist es eine hilfreiche Kurzschrift dass Laravel bietet uns. So werden wir verwenden diese Schreibweise statt. Und hier werden wir auch Drucken Sie den Inhalt davon. Und hier werden wir post Inhalt zu tun. Und unten am Boden, was wir sind zu tun ist, erstellen Sie eine Fußzeile. Und in der Fußzeile, wir sind zu gehen ersten Anzeige, wenn diese geschrieben wurde. So wurde diese im Internet abrufbar, aufgestellt. Und Laravel verwendet eine wirklich schöne Datum Bibliothek namens Kohlenstoff. So können wir tatsächlich so etwas wie zu tun difforHumans, die Sie bereits gesehen haben. Als wir gebucht. Sie werden sagen: wie vor fünf Sekunden. Also das ist ein wirklich nettes Funktionalität Laravel. Und schließlich werden wir diese Fußzeile zu schließen. So, jetzt, wenn wir noch einmal nach Homepage werden wir ganz zu schweigen, weil hier noch zu sehen wir haben nicht die Homepage codiert. Aber wenn wir gehen, um einen Schrägstrich zu schreiben, wir gehen, um eine Ausnahme zu sehen. Weiß jemand, warum wir sehen eine Ausnahme? Was fehlt uns? Irgendwelche Ideen? Also, was haben wir zu tun früher für uns tatsächlich zu definieren, wie wir zu werden insbesondere Controller? Sprecher 1: Die Strecke? ERIC Ouyang: Ja. Wir haben also noch, um die Strecke zu definieren. So gehen wir wieder hier, um routes.php. Sie werden feststellen, dass wir bemerken, habe nicht wirklich definiert wie wir gehen, um zu bekommen an diesen Controller. So, jetzt werden wir diesen Weg zu definieren. Es ist ziemlich einfach, ähnlich dem, was wir haben früher. Aber was wir hier zu bemerken ist, dass wir gehen, um einen Platzhalter zu haben. Also, wenn wir tun route.get Schrägstrich nach ID. So, jetzt ID ist, was zu gehen in den Controller übergeben werden. Das wird die Verwendung Controller, die wir gerade erstellt, BlogController bei viewPost. Und wir sind zu gehen alias dies als viewPost. Großartig. So, jetzt werden wir diesen Weg zu schaffen. So, jetzt, wenn wir hier gehen und aktualisieren Sie diese Seite, wir in der Tat zu tun haben unseren neuen Blog-Post. Also das ist, was wir zuvor erstellt haben. Sehr einfache Seite, sondern zeigt die Blog-Post, die wir gerade erstellt haben. Kühle. Und wenn wir tatsächlich durch das ganze gehen Prozess der Erstellung eines neuen Blog-Eintrag, wir werden feststellen, dass alles, was Weiterleitungen richtig. Wenn ich sage: "Hallo. Ich bin Jonathan Tan. " Sagen: "Das ist mein Blog-Post." Und es einreichen, dies zu schaffen Diese neuen Blog-Eintrag mit ID 2, die Schritten von dem, was wir hatten, zuvor und zeigt es richtig. Ehrfürchtig. Haben Sie Fragen? Ja? SPEAKER 2: Funktioniert Laravel Griff Desinfektion und alles, was für Sie? ERIC Ouyang: Ja. Also, wenn wir früher, als sah wir haben Eingang Doppelpunkt Doppelpunkt zu bekommen, dass sanitates beliebige SQL- Injektionen und so weiter dass wir wollen, wenn führen könnte wir sind ein böswilliger Benutzer der Website. So Laravel Griffe viel aus, dass hinter den Kulissen. Gute Frage. Werfen wir also einen Blick auf die Homepage. Also, wenn wir zuerst zurück in die Controller für die Startseite, Sie werden feststellen, dass es nicht viel hier nicht. Sie werden bemerken, dass wir nicht Übergang in diesem Controller etwas besonders hilfreich. Es ist gerade diese Index-Datei. Lassen Sie uns also in geben dies etwas hilfreich. Und gesagt, wir sind werde in Beiträgen bestehen. Und Laravel erlaubt uns post alle tun, was wird es uns ermöglichen, alle Beiträge zu bekommen. Wenn wir nun zurück zu gehen index.php, werden Sie sehen, hey. Nichts ist hier noch. Aber was wollen wir hier machen ist eigentlich durch laufen, führen Sie eine foreach-Schleife über die Beiträge, ermöglicht es uns, drucken Sie sich die Beiträge. So wie foreach Beiträge Post, was wir tun wollen wird der Inhalt ausdrucken der Blog-Post. Aber eine Sache, werden Sie feststellen, ist, dass wir eigentlich die meisten, dass Code geschrieben bereits in view.blade.php. Also, was wir tatsächlich tun, ist verwenden einen schönen hilfreiche Funktion von Blade- und ausklammern diesen gemeinsamen Code. So gehen wir hier. Wir werden diese Inhalte zu nehmen genau hier, und was wir tun werden ist einen neuen Ordner erstellen. Nennen wir es einfach Partials. Und hier werden wir einen post.blade.php erstellen. Also hier, ausgeklammert wir die Art und Weise die wir, um diese Einträge angezeigt werden sollen. Und hier, was wir tun, statt tatsächlich direkt mit, dass HTML, wir werden diese Anweisung verwenden genannt sind blog.partials.post. Und was wir hier machen spielte in der Zeit nach der Seite. So, jetzt, wenn wir hier wieder, wir feststellen, dass die Funktionalität noch das gleiche. Jetzt aber dies haben wir ausgeklammert Code, HTML. So können wir es im Index zu verwenden. So, hier, das ist sehr einfach. Alles, was wir tun, ist enthalten blog.partials.post und Array. Und irgendwo auf vor, wir post. So, jetzt, wenn wir wieder in die Homepage, wir werden sehen, dass, hey. Wir haben eine Liste aller Blog-Beiträge, die wir vorher hatten. Wir möchten vielleicht fügen Sie einige "if" Bedingungen und "else" Bedingungen so dass, wenn wir nicht haben alles auf dem Blog, Wir wollen etwas hilfreich anzuzeigen. Wie, hey. Es gibt derzeit kein Inhalt auf dem Blog. Und wenn euch eigentlich betrachten die Verteilung Code auf GitHub, Sie ein Beispiel, wie wir das tun, sehen. Kühle. Haben Sie Fragen? Ja. SPEAKER 2: Ich denke, gerade eine grundlegende Frage. Zurück auf die Route. ERIC Ouyang: Ja. Wenn wir einen Blick auf Routen. SPEAKER 2: Woher kommt der uses.blogcontroller bei erstellen Post, was bedeutet, dass direkt wir? ERIC Ouyang: Ja. Ja. SPEAKER 2: Oder was ist dass-- ERIC Ouyang: Also, schauen Sie, sagen, zum Beispiel die Route gleich hier. Der erste Teil ist die eigentliche URL, die der Benutzer zu gehen. Und das Array hier, assoziatives Array, legt fest, Wie wollen wir das haben Anwendung Handlung als Reaktion auf sie. So verwendet der Controller, Die Funktion, die wir will rufen, wenn ein Anwender diese URL. So viewPost hier ein Funktion, die wir im Inneren definiert von BlogController-- SPEAKER 2: Ich verstehe. ERIC Ouyang: -SO dass wir kann tatsächlich machen den Blick, führen einige Berechnungen, interagieren mit der SQL-Datenbank. SPEAKER 2: OK. ERIC Ouyang: Und dann die andere Teil ", wie" ist ein Alias, die wir verwenden. Wenn wir bemerken, wenn wir die Form erstellt, Sie werden feststellen, dass die URL :: routecreatePost. So ist es in der aktuellen ersetzt URL, so dass wir nicht hart Codierung diese in so können wir es ändern einmal, sagen wir, wenn wir benennen wollte. Statt nach Schrägstrich neue, wie, p tun wir Slash neue nur zu reinigen unsere URLs ein bisschen. Wir würden es in einem Punkt nicht ändern als das auf den verschiedenen Dateien. Kühle. Das ist gut. So, jetzt haben wir ein sehr Grund Blog-Plattform. Wir wollen wahrscheinlich in eine Schaltfläche hinzufügen, damit dass wir tatsächlich neue Beiträge. Also, wenn wir einen Blick am Layout Master, wir einen Abschnitt namens Header-Rechts haben dass wir gerade an der Spitze definiert. So können wir Knöpfe hinzufügen die Oberseite der Kopfzeile. Also, wenn wir gehen, um index.blade.php, tatsächlich zu tun ist, zu definieren, was in der hier geht. Also das mit der rechten Kopfbereich, was wir tun werden befindet sich in einer Taste, um die zu gehen hinzufügen URL von der Route einen neuen Beitrag definiert. Nur um es zu reinigen und machen es hübsch und alle Bootstrap, werden wir machen dies ein Standard-Schaltfläche. Lassen Sie uns nur machen es großen Spaß. Und in ihm konnten wir einen Text setzen. Welche Bootstrap Aber bietet ist glyphicons. So können wir tatsächlich hinzufügen, dass schöne Bleistift, die wir bereits gesehen haben. Glyphicon. Glyphicon-Bleistift. Also das wird uns erlauben, setzen in einem Symbol anstelle von Text. Nun, wenn wir aufhören, diese wird diesen Abschnitt zu definieren. Und, hey. Wir haben ein schönes Taste, die uns verbindet direkt an der einen Blog-Post Seite hinzufügen. So haben wir eine ziemlich einfache Blog. Wir können Sachen hinzufügen. Aber was wir in der Regel erwarten von Blogs wird zu kommentieren. So ist es wirklich wichtig, dass wir haben, sagen, wenn jemand anderes besucht eine Website und wirklich mag die Post, dass sie in der Diskussion beteiligen können mit anderen Menschen, die Seite zu besuchen. So werden wir zu gehen, und erstellen Sie ein neue Datenbanktabelle und ein neues Modell damit verbinden wir können kommentiert mit Beiträgen. Der erste Schritt, genau wie zuvor, ist, dass wir brauchen, um eine Migration ausführen. So wie vor, wir machen php Handwerker migrieren: machen. Und wir werden um eine zu erstellen genannt create_comments_table. Dies wird eine Datei erstellen das hat unsere neue Migration. Und wir sind zu gehen, wie vor, definieren Sie eine neue Tabelle. So Schema :: erstellen Tabelle namens Kommentare. Diese Funktion hier. Und innerhalb dieser Tabelle, was wir werden tun müssen, ist zunächst, wie zuvor, eine ID zuweisen. Erhöht ID. Wir werden, damit die Benutzer zu verknüpfen ihren Namen mit einem bestimmten Kommentar. Wir werden einige Inhalte haben, dass geht einher mit diesem, Textinhalt. Und hier, was wir zu gehen tun, ist etwas anderes. Wir werden eine ganze Zahl erstellen so nennt man die post_id wird, um anzuzeigen, welche Post ein bestimmter Kommentar geht mit. Darüber hinaus sind wir tatsächlich zu setzen ein Fremdschlüssel zu diesem Thema. So MySQL durchzusetzen, dass. Wir versuchen nicht, zuweisen Kommentar Nummer 5, um zu Posten 5000, wenn wir nicht hatte 5000 Beiträge auf sie. Also, was wir hier tun, wir tun ausländischen post_id wird sich mit zugeordnet sein das ID-Feld aus der Tabelle Einträge. Und wir werden tatsächlich etwas zu tun sonst hilfsbereit, onDelete. Also, wenn wir irgendein löschen Post aus der Datenbank, dass wir an den Kaskaden wollen löscht für Kommentare auch. Denn es ist nicht sehr hilfreich für uns Kommentare zu Beiträge zu müssen dass es nicht. Und schließlich, wie zuvor, sind wir werde Zeitstempel auf diese einzustellen. Und wie vor, wir sind zu gehen haben die umgekehrte Migration Fallenlassen der Kommentare Tisch. So, jetzt, wenn wir zurückgehen hier werden wir , diese Migration, Handwerker wandern laufen. Und jetzt ist es diese angewendet Migration, die wir gerade erstellt haben. Wenn wir also einen Blick auf phpMyAdmin, wir tun, in der Tat, jetzt eine Tabelle, die die Kommentare hat Struktur, die wir gerade festgelegt. So wie früher, wir sind gehen, ein neues Modell zu erstellen zu abstrahieren der SQL-Tabelle dass wir gerade erstellt haben. Lassen Sie uns also eine neue Datei hinzufügen. Wir werden es nennen comment.php. Und das ist eigentlich los, um fair zu sein einfach mit einer leichten Veränderung von dem, was wir vorher hatten. So Klasse Kommentar erstreckt Eloquent. Und was wir hier zu tun ist, zu definieren eine Funktion, die ist Beziehung zu anderen Modellen. So werden wir einen Beitrag Funktion hier, die diesen Zusammenhang zurück. So dass wir die Angabe, dass Diese gehört zu veröffentlichen, sagen, dass es einen Beitrag dass dieser Kommentar gehört. Das hat eigentlich sein Hauptstadt P für das Modell. Und jetzt gleich auf der anderen Flip Seite haben wir zu sagen, dass, hey. Beiträge sind Kommentare. Also, was wir tun werden ist definieren public function Kommentare. Und hier wird zurückgegeben Dies hat viele Kommentare. So, jetzt magisch, wenn wir einen Beitrag, können wir die Attribut Kommentare erhalten und es wird mit der bevöl Informationen aus der Datenbank. Lassen Sie uns also tatsächlich durchlaufen und fügen Sie eine neue Funktion, um unsere Ansicht Datei so dass wir beide können Anzeige und erstellen Sie Kommentare. So werden wir definieren einen neuen Abschnitt. Lassen Sie uns zu trennen es nur mit einer horizontalen Linie. Abschnitt id = "Kommentare". Was wir tun werden hier ist, wie zuvor, durchlaufen alle Kommentare. Also wirklich, wie wir dies tun, ist, wie gesagt, ziemlich magisch. Wir tun Kommentare zu schreiben. Und dann können wir dies für jeden zu tun Schleife über jedes der Kommentare. Und was wir zu gehen zu tun ist, div class Kommentar, und wir werden tatsächlich Drucken Sie diesen Kommentar. So zeigen, dass hey, Kommentar name-- die Person die Beiträge geschrieben dieses comment-- sagt dot dot dot. Wir werden dies in einem Block setzen Angebot, nur um es schön aussehen. Und dann kommentieren Inhaltsblock Zitat. Und foreach. So, jetzt ist dies eine Schleife gehen durch alle Kommentare daß zugeordnet wobei jeder der Beiträge und zeigt jede dieser Stellungnahmen. Ich werde einen weiteren Abschnitt unten hinzufügen hier, das ermöglicht es uns, einen Kommentar hinzuzufügen. So h3 Klasse. Legen Sie hier einen Titel an. Einen Kommentar hinzufügen. Und wir werden eine neue Form zu definieren. So wie früher, wir sind werde form action tun. Und hier ist die neue Aktion sind wir werde einen neuen Controller zu definieren, dass ermöglicht es uns, zu reagieren, um zu Posten Anforderungen für die Erstellung von Anmerkungen. So URL :: Route createComment. Ich werde in den Parameter hinter sich lassen. Die ID des Beitrags, dass schaffen wir kommentieren. Und dann wird das Verfahren dieser Form wird Post sein. Jetzt werden wir hinzufügen, in zwei Felder, Form Gruppe. Das wird ein Eingang mit dem sein Namen "name" und class = "Form-Kontrolle" type = "text", und mit der Platzhalter = "Ihr Name". Wir werden auch zu definieren, ein weiteres Formularfeld, die wird ein Text sein Bereich als wir vorher hatten. Genau wie vor, nennen es Gehalt. Class = "Form-Kontrolle." Platzhalter = "Schreiben Sie hier." Und nur damit, dass wir tatsächlich eintragen, einreichen Art und class = "btn-Primär btn." Schließen Sie das Formular. Schließen Sie diese Aktion. So, jetzt, wenn wir diese Seite, wo aktualisieren wir haben, sagen wir, eine bestimmte Stelle. Wir müssen den Server neu starten. PHP-Handwerker zu dienen. Starten Sie diese. Wir haben, um die Strecke zu definieren. Aber jetzt lasst uns einfach nehmen diese aus, so dass wir tatsächlich zeigen Ihnen was die Seite aussieht, und dann wir tatsächlich noch zu einer Route. Also, hey. Wir haben diese neue Form hier unten damit wir Kommentare erstellen. Lassen Sie uns also tatsächlich definieren ein Funktion in der Steuerung damit wir Kommentare hinzufügen. Gehen wir zurück. Und innerhalb blogcontroller.php, was wir tun werden ist eine neue Funktion zu erstellen genannt erstellen Kommentar. Public function createComment. Das wird ein einzelnes zu haben Parameter, die ID der Pfosten dass wir zu kommentieren. Und wie vor sind wir werde zuerst erhalten den Pfosten. So veröffentlichen, findOrfail id. Danach werden wir um einen neuen Kommentar zu erstellen. So kommentieren = new Kommentar. Kommentar Name = Eingang :: get Namen. Kommentar content = gleich neue Linie in den Pausen der Eingangs :: get Inhalt. Und schließlich werden wir zu haben, assoziieren diesen Kommentar mit der Post. So werden wir verwenden Diese Funktion, Kommentare, dass können wir sparen diese Beziehung. So, jetzt wird dieser Kommentar haben automatisch die Post-ID. Wir könnten auch legen Sie es manuell, ist aber mehr einfach zu bedienen wie bisher gelesen wie die Funktion geht. Und nachdem wir durchführen dies, was wir tun wollen ist leiten den Benutzer auf die Route viewPost angegeben mit dem Array mit den Parameter der Post-ID. Und jetzt, dass dies tatsächlich Funktionen, müssen wir diesen Weg zu definieren. Routen :: Post. Und jetzt werden wir diese nennen Beitrag senken ID Strich Kommentar. Array verwendet die neue Funktion dass wir gerade erstellt haben. BlogController. Als createComment CreateComment. Großartig. So, jetzt hoffentlich, wenn wir diese Seite aktualisieren und fügen Sie in einem Kommentar, sagen wir, David Malan. "Ich hoffe das funktioniert." Senden. Wir haben in der Tat, haben eine Kommentar zu diesem Blog-Post. Kühle. So, jetzt haben wir ein ziemlich Funktions Blog-Post. Wir sind gerade dabei, fügen Sie ein paar Tweaks so dass wir etwas mehr nützlich Informationen zu diesen Beiträgen. Also, wenn wir wieder in die Titelseite, haben wir keinen Sinn wie viele Kommentare sind auf jedem dieser Beiträge. Also, was wir eigentlich vor sich geht zu tun ist, in unserem Modell, definiert eine Hilfsfunktion, die erlaubt uns, die Anzahl der Kommentare angeben dass mit einer bestimmten Post zu gehen. So werden wir erstellen eine Hilfsfunktion. Öffentliche Funktion. GetNumCommentsStr. So ein String, der Nummer gibt Kommentare, die zusammen mit ihm zu gehen. Und das, was wir tun werden, ist sagen, dass num = diese Kommentare zu zählen. So werden wir zu zählen die Anzahl der Kommentare. Und wenn diese Zahl gleich 1 ist, sind wir gerade dabei, ein Kommentar zurück. Und dann nichts anderes, zurückgeben wollen wir die Verkettung von num ab und Anmerkungen, so erhalten wir die Pluralisierung richtig. So stellen Sie diese ein einfaches Anführungszeichen. Ein Kommentar. Und jetzt können wir mit dieser Funktion direkt in unserer Ansicht. Also, wenn wir wieder in die Teil Beiträge, die wir erstellt haben, jetzt wollen wir eigentlich zeigt die Anzahl der Kommentare. Also, was wir tun können, ist Post, können Sie hier dass wir gerade erstellt zeigt die Anzahl der Kommentare. Wenn wir jetzt zu aktualisieren, es sieht in der Tat, Anzeige Die Anzahl Kommentare dass gehen zusammen mit ihm. Wenn wir Lust, wenn Sie sein wollte tatsächlich auf die Verteilung Code aussehen, wir tatsächlich verlinken Diese auf die Ausführungen. Wenn Sie sich erinnern, innerhalb der definierten wir anzuzeigen, dass dies Abschnitt ID Kommentare. Also, wenn wir eigentlich wollten verlinken direkt an den Kommentaren, was würden wir hier tun, ist a href URL der Route viewPost. Übergeben Sie in dem Feld ID der Post-ID. Und dann, um zu gehen, wollen wir insbesondere das Kommentarfeld. Hier wollen wir schließen Sie die Ein-Tag. So, jetzt, wenn wir diese zu aktualisieren Seite klicken Sie auf die wir zu diesem Thema. Wir werden direkt zu gehen das Kommentarfeld. Wenn wir einen längeren Beitrag können Sie tatsächlich sehen diese Sprungkraft nach unten. Aber Sie werden feststellen, dass es nicht an der Spitze der Seite. Kühle. Großartig. Also das ist eine ziemlich einfache Beispiel für etwas einfach dass Sie mit Laravel tun können. Aber man hier feststellen können, dass wir haben eine Menge Dinge getan mit einer ziemlich kleinen Menge von Codes. Laravel ermöglicht es uns, das zu tun SQL-Abfragen hinter den Kulissen. Es spielt die Hygiene für uns hinter die Kulissen. Ermöglicht es uns, diese Beziehungen zu tun sehr leicht, ohne dass wir um beliebige SQL-Anweisungen zu tun beitreten Kommentare zu verbinden mit dem, was den Pfosten. Ermöglicht es uns, dies zu tun Vererbung von Vorlagen damit wir diese Verschachtelung definieren Dateien, so dass wir uns nicht wiederholen, wie als wir, dass Anzeige der Blog-Beiträge dass wir nicht haben, kopieren, in den Code. Und von hier aus können Sie bauen immer komplizierter Anwendungen. Sie können sich vorstellen, wenn wir wollte umzusetzen einloggen, könnten wir sagen, bringen in einem Dritten Rahmen, der uns erlaubt, das zu tun. Es gibt eine Menge von ihnen die wirklich sind, wirklich groß, die wie zu tun, Passwort-Wiederherstellung. Und es wird Ihnen eine Nachricht senden Passwort zurücksetzen E-Mail. Wir können die Erlaubnis zu implementieren so dass ich einen Beitrag zu erstellen, aber jemand anderes nicht bearbeiten. Wir implementieren Funktionalität, um Beiträge zu löschen. Aber sehen Sie hier, was wir haben ziemlich viel alle rudimentären Komponenten einige wirklich bauen, wirklich, dynamische und spannende Web-Anwendungen. Also mit diesem, ich denke, wir sind gut. Habt ihr Fragen? Ja? SPEAKER 3: Wie wollen Sie bekommen statische Inhalt? ERIC Ouyang: Statische Inhalte. So sah vor, dass Sie, als wir Dieses hier, dieses Layout Inhalte, Ansicht Marke, dies hatten wir ohne dieses Array anschließend. Blog.index, dies hatten wir als nur eine statische Datei. Also, wenn wir nicht weitergeben alles zusammen, um es zu, es werde einfach machen den HTML-Code direkt. Aber wenn wir in diesem assoziativen geben Anordnung von Pfosten, die dynamisch ist aus der Datenbank herausgezogen, man können die Seite dynamisch zu machen. Kühle. Noch Fragen? SPEAKER 3: Wie würden Sie vergleichen Laravel um vielleicht einige andere Optionen? ERIC Ouyang: Sicher. Ja. So Laravel ist-- das ist, ein großer question-- eine von vielen Möglichkeiten für Web-Frameworks. So Ruby on Rails ist eine, die beliebt ist. Ich glaube, dass Twitter früher mit Ruby on Rails umgesetzt. Ich denke, sie seit schaltet haben. Es gibt eine andere sogenannte FuelPHP. So Ruby on Rails verwendet die Programmiersprache Ruby und implementiert eine Menge von der MVC Zeug dass wir hier sehen. FuelPHP ist ein weiteres PHP-Framework. Django ist einer meiner Favoriten. Es ist ein Web-Framework für Python. So können Sie Ihre Web-Anwendung in Python zu schreiben. So gibt es eine Tonne dieser Optionen. Laravel, glaube ich, durch und groß ist mein Lieblings-Recht jetzt PHP nur weil der Komponenten dass wir sprachen über früher. Es ist Komponist aktiviert. Es umfasst ein wirklich, wirklich expressive ORM-System. Auch hat eine wirklich genial Templating Sprache, die einige von den anderen einfach nicht bieten. Und Migrationen. Migrationen sind genial auch. Cool? Ehrfürchtig. Nun, vielen Dank für die beobachten dieses Seminar, und viel Glück auf der endgültigen Projekte.