[Παίζει μουσική] ERIC Ouyang: Γεια σου, ο καθένας. Καλώς ήρθατε. Αυτό είναι Κτίριο Δυναμική Web Apps με Laravel. Το όνομά μου είναι ο Eric Ouyang. Είμαι δευτεροετής φοιτητής σπουδάζει κοινωνικές μελέτες με μια δευτερεύουσα στην επιστήμη των υπολογιστών, και ζω σε Adams Εδώ στο Harvard House. Έτσι Laravel, σε περισσότερες πυρήνα της, είναι ένα MVC πλαίσιο Web App. Έτσι αρέσει αυτό που εσείς έχετε κάνει με CS50 Οικονομικών, Laravel είναι ένα πλαίσιο που επιτρέπει σας για την δημιουργία δυναμικών web εφαρμογές. Έτσι, μπορείτε να σκεφτείτε ότι σε ορισμένες αισθήσεις ως προέκταση του είδους της ουσίας έχετε κάνει σε CS50 Οικονομικών, αλλά ένα σύστημα που είναι πολύ πιο ισχυρή, πολλά πιο κομψό σε ορισμένες αισθήσεις, και παρέχει πολλές λειτουργικότητα για εσάς να χτίσει αρκετά περίπλοκη web εφαρμογές. Έτσι, ας πάμε σε μερικά από τα βασικά χαρακτηριστικά, και, στη συνέχεια, θα καταδύεται σε ένα παράδειγμα της οικοδόμησης ενός blog εφαρμογή με Laravel. Έτσι ένα από τα πρώτα πράγματα που διαφοροποιεί από MVC είδος της εργασίας ότι έχετε κάνει με CS50 είναι ότι περιλαμβάνει ένα κινητήρα ORM. Έτσι ORM σημαίνει αντικείμενο σχεσιακή χαρτογράφηση. Έτσι, αυτό σας επιτρέπει να οικοδομήσουμε ένα στρώμα αφαίρεσης μεταξύ της βάσης δεδομένων και των ελεγκτών σας. Έτσι, σε αντίθεση με CS50 Οικονομικών όπου κάνετε άμεσα ερωτήματα, το στρώμα ORM σας επιτρέπει να αφηρημένα μακριά και να δημιουργήσουν μοντέλα που είναι πιο ισχυρό από ό, τι μπορείτε άμεσα με ερωτήματα SQL. Ένα άλλο πράγμα που είναι πραγματικά χρήσιμο είναι κληρονομήσιμη πρότυπα. Έτσι, θα παρατηρήσετε σε CS50 Οικονομικών, θα καταλήξετε ξαναγράψιμο πολλά πράγματα, όπου τοποθετεί θα μπορούσαν ενδεχομένως επαναχρησιμοποίηση πράγματα, δεν είστε σε θέση να. Έτσι, εδώ στην Laravel, μπορείτε να χρησιμοποιήσετε ό, τι είναι γνωστή ως κινητήρα πρότυπο λεπίδα για να δημιουργήσετε ένα κύριο διάταξης. Και από εκεί, μπορείτε να κληρονομήσει έτσι ώστε οι υπο-πρότυπα μπορούν στην πραγματικότητα περιλαμβάνουν στοιχεία μέσα ότι οι μεγαλύτερες βασικό πρότυπο. Μετανάστευση. Έτσι, αυτό είναι ένα αρκετά πρότυπο χαρακτηριστικά πιο σύγχρονα πλαίσια εφαρμογής web. Έτσι, αυτό σας επιτρέπει να αντιπροσωπεύουν αλλαγές σχήματος βάσης δεδομένων στον κώδικα. Έτσι, χωρίς να πρόκειται να πω, το phpMyAdmin, μπορείτε να δημιουργήσετε πραγματικά αυτές τις μεταναστεύσεις όπου θα αντιπροσωπεύουν τη βάση δεδομένων σχήμα αλλάζει στον κώδικα άμεσα. Και αυτό σας επιτρέπει να to-- ιδιαίτερα αν έχετε πολλά άτομα που εργάζονται στον ίδιο ιστό application-- παρακολουθείτε τις αλλαγές αυτές, πούμε στο GitHub, ή κάποιο άλλο αποθετήριο. Έτσι, αυτό είναι πραγματικά χρήσιμη και μετριάζει την ανάγκη για, ας πούμε, να περάσει γύρω από μια παρτίδα του SQL χωματερές. Και τέλος, Συνθέτης είναι κάτι πραγματικά, πραγματικά χρήσιμο που σας επιτρέπει να χρησιμοποιήσετε άλλες κώδικας των ανθρώπων να κάνουν τρομερά πράγματα. Έτσι Laravel είναι δομημένη ως διάφορα πακέτα συνθέτης. Έτσι λένε, αν ήθελε να φέρει σε ένα πακέτο ελέγχου ταυτότητας ή αν ήθελε να φέρει σε ορισμένες είδος του σεναρίου της γεννήτριας ή ενός διαχειριστή διεπαφή, μπορείτε να συνδέσετε και να παίξετε αυτά τα συστατικά με τον συνθέτη. Έτσι, ας ξεκινήσουμε. Όλες οι ερωτήσεις από εσάς παιδιά πριν ξεκινήσετε; Δεν υπάρχουν ερωτήσεις; Cool. Έτσι, το πρώτο βήμα είναι Συνθέτης εγκατάσταση. Έτσι Συνθέτης σας επιτρέπει να διαχειριστεί αυτές τις εξαρτήσεις, είτε πρόκειται για το πλαίσιο Laravel ή κάποια άλλη επέκταση τρίτους. Η πρώτη εντολή επιτρέπει μπορείτε να κατεβάσετε Συνθέτης, και η δεύτερη εντολή σας επιτρέπει να το μετακινήσετε σε τοπικό φάκελο bin σας έτσι ώστε να μπορείτε να εκτελέσετε Συνθέτης απευθείας μέσω του τερματικού. Μετά από αυτό, να προχωρήσει και να δημιουργήσετε ένα νέο έργο Laravel. Είμαστε πραγματικά πρόκειται να χρησιμοποιούν κάποια παράδειγμα κώδικα ότι έχω βάλει μαζί να δημιουργήσει αυτό το blog. Αλλά εάν είστε αρχίζοντας από το μηδέν, θα πρέπει να χρησιμοποιήσετε αυτήν την εντολή μέχρι εδώ, συνθέτης δημιουργούν έργου, laravel κάθετο laravel, και στη συνέχεια, το όνομα του έργου σας. Και αυτό θα περιλαμβάνει όλος ο κώδικας διανομής για την έναρξη ενός νέου έργου Laravel. Έτσι, για CS50 τελευταία έργα σας, θα πιθανόν να θέλετε να χρησιμοποιήσετε αυτήν την εντολή. Αλλά θα πάμε για να ξεκινήσετε με αυτό. Έτσι, τη στιγμή που έχετε κάνει ότι, θα πάμε να πάρετε ένα αρκετά εκτεταμένο αριθμό των αρχείων σε blog50. Έτσι, ας περάσει ορισμένα από αυτά τα συστατικά. Θα παρατηρήσετε σε αυτή τη διαδρομή κατάλογο, υπάρχει ένα φάκελο app. Μέσα στο φάκελο app, υπάρχει ένα ζευγάρι χρήσιμες φακέλους. Αξίζει να σημειωθεί ότι για να ξεκινήσει με είναι αυτός ο φάκελος ρυθμίσεων. Έτσι, αυτό δημιουργεί πώς web εφαρμογή σας είναι πρόκειται να, ας πούμε, τον έλεγχο ταυτότητας άτομα ή μετρητά πράγματα ή να συνδεθείτε με τη βάση δεδομένων. Και τι είναι πραγματικά χρήσιμο είναι ότι Laravel Σας επιτρέπει να ορίσετε διαφορετικά περιβάλλοντα ανάπτυξης. Έτσι, αυτό που έχουμε κάνει εδώ είναι αν πάμε κάτω από το τοπικό φάκελο, υπάρχει ένα αρχείο database.php. Και θα παρατηρήσετε ότι εμείς εδώ δημιουργήσει μια σύνδεση MySQL ότι επιτρέπει στα άτομα να συνδεθείτε στον MySQL εξυπηρετητή που είναι απευθείας στη συσκευή CS50. Και είμαστε σύνδεση με μια βάση δεδομένων ότι Έστησα ονομάζεται Blog50. Ας πραγματικά να πάμε μπροστά και να εκτελέσετε την λειτουργική έκδοση του αυτό, απλά για να πάρετε μια αίσθηση του τι είναι η εφαρμογή που χτίζουμε μοιάζει. Έτσι έχω ένα αντίγραφο του Αυτό Blog50 ολοκληρωθεί. Έτσι Laravel πραγματικότητα έχει κατασκευαστεί σε ένα διακομιστή ότι μπορείτε να εκτελέσετε άμεσα από τη γραμμή εντολών. Έτσι, αυτό είναι παρόμοιο με το PSET πριν, όταν στην πραγματικότητα δημιουργήσουν το δικό τους server σας σε C. Έτσι έχουν ένα ενσωματωμένο έτσι ότι μπορείτε να εκτελέσετε Laravel εφαρμογές σας απευθείας από τη γραμμή εντολών. Έτσι, αν κάνουμε php τεχνίτης εξυπηρετούν, αυτό θα ξεκινήσουμε έναν διακομιστή ανάπτυξης στη θύρα 8000. Έτσι, αν πάμε στο τοπικό κεντρικό υπολογιστή 8000, θα παρατηρήσετε ότι, hey. Έχουμε το blog μας σε λειτουργία. Έτσι, εδώ Laravel δημιουργεί Η πρώτη σελίδα του ιστολογίου μας. Πολύ απλή εφαρμογή. Αλλά υπάρχει ένα ζευγάρι πολύ βολικά χαρακτηριστικά ότι παρέχει κάτω από την κουκούλα. Έτσι, η εφαρμογή των blog απλή. Αν θέλαμε να δημιουργήσουμε μια θέση, μπορούμε να κάνετε κλικ σε αυτό το κουμπί. Μπορούμε να πούμε, "Γεια σου, ο καθένας. Αυτό είναι ένα πραγματικά διασκεδαστικό σεμινάριο, "για παράδειγμα. Και γράψω κάτι εδώ κάτω. Κείμενο εδώ. Αν κάνουμε κλικ Υποβολή, θα παρατηρήσετε ότι το νέο blog μας θέση έχει προστεθεί ο πρώτη σελίδα του blog. Αν πάμε πίσω εδώ, θα παρατηρήσετε ότι υπήρξαν κάποια σχόλια που έχουν ήδη σχετικά με το blog. Έτσι, αν έχουμε κύλιση προς τα κάτω, θα παρατηρήσετε ότι ο Jonathan Ταν λέει ότι ήταν πολύ κέντρισε το ενδιαφέρον από τη θέση αυτή. Έτσι θα πάμε στο πώς αντικείμενο σχεσιακή χαρτογράφηση επιτρέπει μπορείτε να κάνετε αυτές τις σχέσεις ένα αρκετά απρόσκοπτη τρόπο, καθώς και. Cool. Οποιεσδήποτε ερωτήσεις σχετικά με τη λειτουργικότητα από ό, τι θα πάμε να οικοδομήσουμε; Cool. Ας αρχίσουμε λοιπόν με πραγματικά τη δημιουργία των πινάκων της βάσης δεδομένων. Έτσι, υπενθυμίζουν ότι σε CS50 Οικονομικών, που βάλει μαζί ένα τραπέζι για τους χρήστες καθώς και για την αποθέματα στο χαρτοφυλάκιό σας. Έτσι, όπως αναφέραμε προηγουμένως, αυτό που χρησιμοποιούμε στην Laravel Είναι κάτι που είναι γνωστό ως μεταναστεύσεις. Έτσι, αν πάμε πίσω στο Κωδικός διανομή εδώ, η πρώτη εντολή που είναι χρήσιμο το γεγονός ότι Laravel σας παρέχει είναι αυτή η εντολή μεταναστεύσουν. Έτσι, μπορούμε να κάνουμε php τεχνίτη μεταναστεύσουν: κάνει. Έτσι, αυτό μας επιτρέπει να δημιουργήσετε μια μετανάστευση. Και τότε θα θελήσετε να δημιουργήσει μια μετανάστευση ονομάζεται create_posts_table, το οποίο πρόκειται να είναι όπου θα πάμε να να αποθηκεύει θέσεις blog μας. Και θα παρατηρήσετε εδώ ότι τρέχει μέσω κάποιου κώδικα που πραγματικά δημιουργεί ένα αρχείο με ένας χρόνος σφραγίδα σε αυτό. Έτσι, αν πάμε και να δούμε βάση δεδομένων, θα παρατηρήσετε κάτω από τις Μεταναστεύσεις ότι δημιουργείται ένα κενό αρχείο για εμάς που έχει στερεότυπο κώδικα με το όνομα ότι θα καθοριστεί, να δημιουργήσουν θέσεις πίνακα. Και έχει δύο λειτουργίες σε αυτό. Up είναι αυτό που θέλουμε να τρέχει όταν η μετανάστευση εφαρμόζεται στη βάση δεδομένων. Και κάτω είναι αυτό που πάμε να κάνουμε όταν θέλουμε να αντιστραφεί η μετανάστευση. Έτσι, εδώ ας ξεκινήσουμε με τη σύνταξη αυτής της μετανάστευσης. Έτσι, υπάρχει μια χρήσιμη κατηγορία σε Laravel ονομάζεται Schema. Έτσι θα πάμε να τρέξει Schema :: δημιουργήσει. Και θα πάμε να δημιουργήσουμε ένα πίνακα που ονομάζεται θέσεις. Και εδώ ισχύει αυτό χρησιμοποιώντας μια λειτουργία. Και μέσα εδώ, θα πάμε σε πραγματικά προσδιορίζει τα περιεχόμενα του πίνακα μας. Εμείς πάμε για να δημιουργήσετε ένα αναγνωριστικό, η οποία είναι αυτόματη προσαύξηση. Επιπλέον, θα πάμε για να δημιουργήσετε ένα πεδίο που αντιπροσωπεύει τον τίτλο του blog post μας. Είμαστε, επίσης, πρόκειται να δημιουργήσει ένα πεδίο για την αποθήκευση του κειμένου του blog post μας. Και τέλος, θα πάμε για να αποθηκεύσετε κάποια χρονικές σφραγίδες όταν δημιουργήθηκε μετά μας και όταν ενημερώθηκε. Και για κάτω, είναι αρκετά απλό. Το μόνο που θέλουμε να κάνουμε είναι σταγόνα Ο πίνακας που έχουμε δημιουργήσει. Μεγάλη. Οποιεσδήποτε ερωτήσεις; Έτσι τώρα, αν πάμε μπροστά and-- πραγματικότητα, η τοπική υποδοχής, επιτρέψτε μου να διαγράψετε ό, τι είχαμε νωρίτερα. Πηγαίνετε στις Βάσεις Δεδομένων. Πάω να διαγράψετε ό, τι είχαμε νωρίτερα. Αυτή η πτώση και να δημιουργήσουν μια νέα βάση δεδομένων Blog50. Και τώρα τι το μαγικό μέρος είναι εδώ ότι μπορούν να εφαρμόσουν άμεσα αυτές τις μεταναστεύσεις με τη βάση δεδομένων με τη χρήση της γραμμής εντολών εργαλείο. Έτσι, αν κάνουμε php τεχνίτης μεταναστεύσουν, θα παρατηρήσετε ότι, hey. Είναι δημιουργήθηκε το τραπέζι της μετανάστευσης, η οποία θα ρίξουμε μια ματιά σε ένα κομμάτι, και αυτό είναι που εφαρμόζεται αυτό το πρώτο μετανάστευση. Έτσι κοιτάξουμε Blog50, θα παρατηρήσετε ότι δημιουργείται δύο τραπέζια για εμάς. Πρώτα είναι αυτό το τραπέζι των μεταναστεύσεων. Έτσι, αν θέλουμε να περιηγηθείτε αυτό, θα παρατηρήσετε ότι ο πίνακας αυτός είναι αρκετά απλή. Είναι μόλις είπε ότι, hey. Έχουμε εφαρμόσει αυτή τη μετανάστευση. Εμείς πάμε πίσω και να δούμε τις θέσεις. Θα παρατηρήσετε ότι η δομή Είναι ακριβώς αυτό που είχαμε ζητήσει. Έχουμε μια αυτόματη προσαύξηση ταυτότητα. Έχουμε ένα string για την αποθήκευση ο τίτλος, και ένα πεδίο κειμένου για την αποθήκευση του περιεχομένου. Μεγάλη. Cool. Οποιεσδήποτε ερωτήσεις σχετικά με τις μεταναστεύσεις εργασία, πώς μπορούμε να τις εφαρμόσουν; Όχι; Cool. Έτσι, τώρα θα πάμε για να πάει μπροστά και στην πραγματικότητα η δημιουργία του μοντέλου. Έτσι θέλουμε να δημιουργήσουμε ένα μοντέλο θέσεις που αποθηκεύει την αφαίρεση της βάσης δεδομένων. Έτσι, αντί να κάνει MySQL ερωτήματα άμεσα, θα πάμε να δημιουργήσουμε. Έτσι πρέπει να δημιουργήσουμε μια φάκελο εδώ ονομάζονται μοντέλα. Και εδώ μέσα, θα πάμε να δημιουργήσετε ένα αρχείο που ονομάζεται post.php. Μέσα σε αυτό το αρχείο PHP, θα πάμε να δημιουργήσουμε μια θέση κατηγορίας, που εκτείνεται εύγλωττη. Εύγλωττη είναι το όνομα του ORM κινητήρα που παρέχει Laravel. Και εδώ, μπορούμε να αναμένουμε ότι χρειάζεται πραγματικά να γράψω κάποιο κώδικα. Εμείς πάμε για να γράψει μερικά βοηθητικών λειτουργιών αργότερα. Αλλά έξω από το κουτί, αυτό θα έχει ήδη να αναγνωρίσει τι είναι στη βάση δεδομένων και μπορούμε να έχουμε πρόσβαση, ας πούμε, το κείμενο του μετά το blog μας ή τον τίτλο, και να δημιουργήσει τα πράγματα άμεσα με λίγο πολύ καμία απολύτως κώδικα. Έτσι, αυτό είναι ένα από τα μαγικά συστατικά. Και μια φορά του ανέμου αυτής της κατηγορίας είναι πιο ολοκληρωμένου, θα περιλαμβάνουν πληροφορίες σχετικά με το τι είναι σχετικές με, έτσι ώστε τα σχόλια. Επίσης να δημιουργήσετε μια συνάρτηση έτσι μπορούμε πραγματικά να πάρει άμεσα το URL από ένα blog post σελίδα. Cool. Οποιεσδήποτε ερωτήσεις σχετικά με αυτό; Όχι. Cool. Έτσι τώρα μόλις έχουμε το μοντέλο μας, θέλετε να δημιουργήσετε έναν ελεγκτή που είναι σε θέση να διασυνδέονται με αυτά τα μοντέλα, και στη συνέχεια η βάση δεδομένων. Έτσι, αν ρίξουμε μια ματιά στο BlogController, θα παρατηρήσετε ότι δεν υπάρχει πολύ εδώ τώρα. Όλα είναι εκεί είναι μια συνάρτηση του δείκτη που δημιουργεί την αρχική σελίδα, αλλά χωρίς τίποτα εκεί για να εμφανιστεί ακόμα. Έτσι, την πρώτη λειτουργία ότι θα πάμε να δημιουργήσουμε είναι εκείνη που μας επιτρέπει να δημιουργήσει ένα blog post. Έτσι θα πάμε να κηρύξει νέα λειτουργία που ονομάζεται newPost. Και εδώ μέσα απλά, θα πάμε για να ορίσετε τη διάταξη αυτής της σελίδας να είναι μια καθιστούν την έκδοση, αν θυμάστε από CS50, από αυτό το πρότυπο ονομάζεται blog.new, η οποία θα πάμε να δημιουργήσουμε σε λίγο. Θα παρατηρήσετε εδώ στη γραμμή έξι ότι που προσδιορίζονται αυτήν τη μεταβλητή, τη διάταξη. Και αν ρίξουμε μια ματιά στο φάκελο Προβολές, υπάρχει μια Διατάξεις φάκελο, ο οποίος περιλαμβάνει ένα πολύ βασικό αρχείο HTML. Και της σημείωσης, θα παρατηρήσετε ότι έχουμε αυτό το δοχείο εδώ που παράγει περιεχόμενο. Έτσι, στο εσωτερικό του προτύπου μας τι θα πάμε να κάνουμε είναι να δημιουργήσετε ό, τι πρόκειται να είναι αντικαθιστά κατευθείαν μέσα αυτής της διάταξης. Έτσι είπαμε ότι θέλουμε να καταστήσει ένα πρότυπο που ονομάζεται blog.new. Αλλά μέσα από το Blog, υπάρχει δεν έχει ακόμη αυτό το νέο πρότυπο. Έτσι θα πάμε να δημιουργήσουμε ένα αρχείο που ονομάζεται new.blade.php. Αυτό λέει ότι Laravel Αυτό το αρχείο PHP θα πρέπει να να αποδίδεται με την λεπίδα κινητήρα πρότυπο. Έτσι, αυτό είναι ένα αρκετά απλή αρχείο. Είναι πρόκειται να είναι η μορφή με την οποία μπορούμε πραγματικά να προσθέσει σε ένα blog post. Έτσι, η μαγεία εδώ από το κληρονομικότητα είναι ότι, hey. Θέλουμε να διευκρινιστεί ότι η τμήμα, το τμήμα περιεχομένου εδώ, η οποία οριοθετείται απόsection καιstop. Λοιπόν, τι είναι στο μεταξύ εδώ πρόκειται να να είναι υποκατεστημένο στο κύριο διάταξης. Και εδώ ό, τι θέλουμε να κάνουμε είναι να πολύ απλά να δημιουργήσετε ένα νέο αρχείο HTML. Ας απλά προσθέστε μια γρήγορη τίτλο. Προσθέστε ένα blog post. Και μέσα σε αυτό, είμαστε πρόκειται να δημιουργήσει μια φόρμα. Το έντυπο αυτό θα έχει μια δράση. Και αυτό πρόκειται να είναι κάτι ότι υποκαθιστά σε αργότερα, και θα δούμε πώς δρομολόγηση ταιριάζει σε εδώ. Αλλά είμαστε ακριβώς πρόκειται να καθορίσει για σήμερα ότι αυτό πηγαίνει σε ένα URL με τη διαδρομή από createPost. Και στη συνέχεια αυτό πρόκειται να έχετε ενεργοποιήσει τη μέθοδο των υστέρων. Μέσα εδώ, θα πάμε να έχουν δύο πεδία. Div class = "μορφή-ομάδα". Είμαστε χρησιμοποιώντας τη βιβλιοθήκη Bootstrap CSS ευγενικά παραχωρήθηκε από το Twitter. Έτσι θα πάμε να δημιουργήσουμε δύο από αυτά. Έτσι, αυτή η πρώτη είσοδος είναι πρόκειται να είναι ο τίτλος. Έτσι εισόδου name = "τίτλος". Class = "formcontrol". Τύπος = "text". Πάω να προσθέσετε ένα σύμβολο κράτησης θέσης = "Τίτλος". Και στη συνέχεια το δεύτερο είναι πρόκειται να είναι μια περιοχή κειμένου. Name = "περιεχόμενο". Class = "formcontrol". Και κράτησης θέσης = "Γράψτε εδώ". Εκεί πάμε. Τέλος, θα πάμε να προσθέσετε ένα κουμπί γρήγορης υποβάλει. Τύπος = "submit" class = "btn btn-πρωτεύον". Έτσι, όλα αυτά είναι χαρακτηριστικά του Bootstrap έτσι ότι αυτό μπορεί να τοποθετηθεί κατά τρόπο που είναι λεία για τον χρήστη, παρά γυμνή HTML. Έτσι, έχουμε καθορίσει τον ελεγκτή εδώ. Έχουμε ορίσει ένα πολύ απλό άποψη. Αλλά αυτό που λείπει είναι ο συνδετικός ιστός. Έτσι, σε αυτό το σημείο, Laravel δεν έχει καμία ιδέα για το πώς θα πάμε να πραγματικά πρόσβαση σε αυτό το χειριστήριο. Έτσι, αυτό ορίζεται σε ένα αρχείο που ονομάζεται routes.php. Και τώρα, έχουμε μία διαδρομή. Ποια είναι όταν πάμε να το Βρίσκεστε εδώ Home για αυτή την ιστοσελίδα, πρόκειται να καταστήσει ο ελεγκτής του δείκτη. Έτσι, εδώ αυτό που χρειάζεται να κάνετε είναι να υλοποιήσετε μια νέα διαδρομή για μας να δημιουργήσουμε μια θέση. Γι 'αυτό και χρησιμοποιούν αυτή τη μέθοδο GET, το οποίο καθορίζει ότι όταν ένας χρήστης προσπαθεί να πάρετε αυτό page-- ειδικά η θέση μειώσει νέα page-- τι θα πάμε να κάνουμε είναι να χρησιμοποιήσετε το χειριστήριο που ονομάζεται BlogController νέα θέση. Η μία που μόλις δημιουργήσατε. Και τότε θα πάμε για να το ψευδώνυμο ως newPost. Εμείς πάμε να δημιουργήσουμε ένα άλλο λειτουργία σε λίγο. Αλλά τι είναι εδώ κάτω το πλήκτρο "ως" είναι ό, τι μπορούμε να υποκαταστήσει μέσα πρότυπα Λεπίδα μας. Έτσι για τώρα, ας πραγματικά να πω επίσης διαδρομή. Έτσι, είμαστε επίσης πρόκειται για να δημιουργήσει έναν ελεγκτή έτσι ώστε να μπορέσουμε να δημιουργήσουμε αυτές τις θέσεις. Έτσι, αν ένας χρήστης θέσεις για τη θέση της σελίδας κάθετο νέα, τι θα πάμε να κάνουμε Είναι χρησιμοποιεί έναν ελεγκτή ο οποίος θα πάμε να δημιουργήσουμε σύντομα ονομάζεται BlogController στο createPost. Και θα πάμε να δημιουργήσετε το ψευδώνυμο αυτό με όσο το createPost. Cool. Οποιεσδήποτε ερωτήσεις; Cool. Ας τρέξει αυτό που έχουμε μέχρι στιγμής. Έτσι, αν κάνουμε php τεχνίτης εξυπηρετούν, θα δούμε πολλά λάθη. Έτσι φαίνεται σαν να έχουμε ένα συντακτικό λάθος στη γραμμή 27 διαδρομές. Αχ. Λείπει ένα ερωτηματικό. Έτσι, αν πάμε σε 8.000, θα δείτε τίποτα εδώ ακόμα. Έτσι, αυτή είναι η προεπιλεγμένη αρχική σελίδα. Αλλά αν πάμε να δημοσιεύσετε νέα κάθετο, hey. Θα είναι το έντυπο που μόλις δημιουργήσατε. Αυτή τη στιγμή, δεν έχουμε εφαρμοστεί η λειτουργική του όταν πατάμε το κουμπί Υποβολή. Έτσι, αν κάνουμε κλικ στο Υποβολή κουμπί, πρόκειται να τρέξει ένα σφάλμα. Αλλά θα πάμε σε κώδικα που τώρα, ακριβώς ό, τι εμείς θέλουν να κάνουν όταν ένας χρήστης υποστηρίζει αυτή τη μορφή. Ας το κάνουμε αυτό. Πηγαίνετε πίσω στο αρχείο Ελεγκτές. Τι θα πάμε να κάνουμε είναι εφαρμοστεί η νέα αυτή λειτουργία που μας επιτρέπει να δημιουργήσουμε μια θέση. Δηλώστε νέα λειτουργία. Δημόσια createPost λειτουργία. Και αυτή η λειτουργία πρόκειται να είναι ένα λίγο πιο περίπλοκο από ό, τι είχαμε πριν. Αλλά θα δούμε εδώ ότι δεν είμαστε πρόκειται να γράψω πραγματικά οποιαδήποτε SQL. Η ORM, τον εύγλωττο ORM, πρόκειται να επιτρέψει μας να το κάνουμε αυτό σε ορισμένες τρόποι για ένα πιο κομψό τρόπο. Έτσι θα πάμε να δημιουργήσουμε μια νέα θέση. Και εδώ είμαστε στιγμιότυπο ένα νέο αντικείμενο από το μοντέλο που μόλις που δημιουργήθηκε, η θέση μοντέλο. Και τι θα πάμε να κάνουμε είναι να ρυθμιστεί η τίτλος χαρακτηριστικό αυτού χρησιμοποιώντας κάτι που παίρνουμε από το διακομιστή. Έτσι, αυτό είναι παρόμοιο με αυτό είχαμε πριν με τον CS50 Οικονομικών όπου θα κάνουμε, χρησιμοποιώντας το Super Παγκόσμια Δημοσίευση ψάχνει για τον τίτλο. Έτσι Laravel παρέχει κάποια αποχέτευση και εταζέρα με τη χρήση αυτής της λειτουργίας βοηθού. Γι 'αυτό και θα προτιμούσε να χρησιμοποιήσει αυτό αντί από αυτή την πολύ βασική πρώτη μορφή από την PHP. Και τότε τι θα πάμε να κάνουμε είναι να ρυθμιστεί το περιεχόμενο του να πάρει Είσοδος περιεχόμενο. Είμαστε πραγματικά πρόκειται να τυλίξει αυτό σε ένα χρήσιμο λειτουργία ότι η PHP παρέχει ονομάζεται nl2br, η οποία Αποδεικνύεται νέες γραμμές, NLS, σε ευρ.μ, τα διαλείμματα, έτσι ώστε να μπορούμε πραγματικά να έχουν διαφορετικά σημεία μέσα σε αυτό. Και τελικά τι θα πάμε να κάνετε είναι να αποθηκεύσετε αυτή τη θέση. Έτσι, καλούμε τη συνάρτηση αποθηκεύσετε σε αυτό το μοντέλο. Εμείς πάμε για να σώσει τη θέση. Και τελικά τι θα πάμε να κάνουμε η ανακατεύθυνση του χρήστη ειδικά για τη διαδρομή που πρόκειται να δημιουργήσουν σύντομα, ψευδώνυμο από viewPost. Και θα πάμε να περάσει στα επιχειρήματα id, είναι η ταυτότητα αυτής της νέας θέσης. Μεγάλη. Έτσι τώρα, αν μπορούμε πραγματικά να πάμε και να τρέξει αυτό. Εμείς πάμε για να προσθέσετε μια νέα θέση. Ας πούμε ότι αυτό είναι το σεμινάριο 50. Και να πω, σίγουρα. ΑΣΕΑ. Όποια και αν είναι. Κάποιο είδος του περιεχομένου. Και Υποβολή. Και θα παρατηρήσετε ότι, hey. διαδρομές δεν ορίζεται. Αλλά αν ρίξουμε μια ματιά στο phpMyAdmin και ψάξτε για το αν ή όχι η λειτουργία μας δεν έκανε τίποτα. Κοιτάξτε Blog50 θέσεις. Θα παρατηρήσετε ότι, hey. Στην πραγματικότητα, δημιούργησε απλώς ότι το blog δημοσιεύσετε με τις χρονικές σφραγίδες, όπως ορίζεται. Έτσι, τώρα ας πάμε πίσω και πραγματικά δημιουργούν αυτή η άλλη λειτουργία στον ελεγκτή μας, Συγκεκριμένα ο ελεγκτής viewPost. Έτσι δημόσια viewPost λειτουργία. Έτσι, εδώ τι θα κάνουμε, αντί των κενών που έχουν παρενθέσεις, θα θέλουν να περάσουν το αναγνωριστικό του η θέση που δημιουργούμε. Και από εδώ, τι θα πάμε να κάνουμε είναι πραγματικά ερωτήματα στη βάση δεδομένων για αυτό. Έτσι, αν κάνουμε δημοσιεύσετε, υπάρχει μια λειτουργία που ονομάζεται Βρείτε ότι μας επιτρέπει να το ερώτημα με ID. Συγκεκριμένα, στην πραγματικότητα, θα πάμε να χρησιμοποιήσετε μια εναλλακτική εκδοχή του αυτό που ονομάζεται Βρείτε ή να αποτύχει, το οποίο μας επιτρέπει για να βγείτε από αυτή τη λειτουργία, να ρίξει μια εξαίρεση αν το αναγνωριστικό περνάμε σε δεν υπάρχει. Και μετά θα πάμε να κάνουμε κάτι παρόμοιο με αυτό που κάναμε νωρίτερα όπου θέσαμε το περιεχόμενο αυτής της σελίδας για να το τετηγμένο έκδοση του νέου αυτού θέα που θα πάμε να δημιουργήσουμε, blog.view. Και θα πάμε να περάσει σε it-- ακριβώς όπως στο CS50 καθιστούν function-- ένα λεξικό των μεταβλητών. Τα κλειδιά αυτού του associative πίνακα γίνει μεταβλητές μέσα στο πρότυπο. Έτσι θα πάμε να κάνουμε μετά τη θέση. Έτσι περνούν έμμεσα τη θέση ότι έχουμε ερωτηθεί από τη βάση δεδομένων. . Τώρα τι θα πάμε να κάνουμε είναι να δημιουργήσουμε αυτή την άποψη έτσι ώστε να μπορούμε πραγματικά να δείτε τα blog θέσεις που έχουμε φτιάξει. Έτσι θα πάμε να δημιουργήσουμε ένα αρχείο που ονομάζεται view.blade.php. Έτσι, μέσα από αυτό το πρότυπο, τι θα πάμε να κάνουμε έχει βάλει μαζί μια απλή σελίδα που μας επιτρέπει να εμφανίσετε το περιεχόμενο. Έτσι, κάνουμε την ενότητα, αυτό είναι πριν από το περιεχόμενο. Σταματήστε. Και τι θα πάμε να κάνουν μέσα εδώ είναι γράψετε κάποιο HTML για να εμφανίσετε αυτή τη σελίδα. Έτσι θα πάμε να το τυλίξετε με μια φανταχτερή νέο στοιχείο HTML5 ονομάζεται άρθρου. Και εδώ, θα πάμε να έχει μια κεφαλίδα όπου θα πάμε να έχουν απλά μια h1, η οποία περιλαμβάνει τη θέση του τίτλου. Μέχρι εδώ, αν κοιτάξουμε αυτό διπλή σγουρά σημειογραφία τιράντες, Αυτό θα κάνει ουσιαστικά PHP echo μετά τον τίτλο. Γι 'αυτό είναι μια χρήσιμη στενογραφία ότι Laravel μας παρέχει. Έτσι θα πάμε να χρησιμοποιήσετε Αυτή η σημείωση αντ 'αυτού. Και εδώ, θα πάμε να επίσης εκτυπώσετε το περιεχόμενο του. Και εδώ, θα πάμε να κάνετε μετά περιεχόμενο. Και κάτω στο κάτω τι είμαστε πρόκειται να κάνουμε είναι να δημιουργήσουμε ένα υποσέλιδο. Και στο κάτω μέρος της σελίδας, θα πάμε να πρώτη οθόνη όταν αυτό δημοσιεύτηκε. Έτσι αυτό δημοσιεύτηκε στις, που δημιουργήθηκε κατά. Και Laravel χρησιμοποιεί ένα πραγματικά ωραίο ημερομηνία βιβλιοθήκη που ονομάζεται άνθρακα. Έτσι, μπορούμε να κάνουμε πραγματικά κάτι που ονομάζεται difforHumans, που είδες νωρίτερα. Όταν δημοσιεύτηκε. αυτό θα πει, όπως, πριν από πέντε δευτερόλεπτα. Έτσι, αυτό είναι ένα πολύ ωραίο λειτουργικότητα του Laravel. Και τέλος, θα πάμε για να κλείσει αυτό το υποσέλιδο. Έτσι τώρα, αν πάμε πίσω στο Αρχική Σελίδα πάμε να δει τίποτα ακόμα εδώ γιατί δεν έχουμε κωδικοποιημένες μέχρι την αρχική σελίδα. Αλλά αν πάμε να δημοσιεύσετε ένα κάθετο, θα πάμε να δούμε μια εξαίρεση. Ξέρει κανείς γιατί βλέπουμε μια εξαίρεση; Τι λείπει; Οποιεσδήποτε ιδέες; Έτσι, αυτό που κάναμε νωρίτερα για εμάς που πράγματι να καθορίσει το πώς θα φτάσετε στο ειδικότερα δε οι ελεγκτές; ΟΜΙΛΗΤΗΣ 1: Η διαδρομή; ERIC Ouyang: Ναι. Συνεπώς, έχουμε ακόμη να καθορίσουν τη διαδρομή. Έτσι πάμε πίσω εδώ για να routes.php. Θα παρατηρήσετε ότι έχουμε δεν έχουν στην πραγματικότητα ορίζεται πώς θα πάμε για να πάρει σε αυτόν τον ελεγκτή. Έτσι, τώρα θα πάμε να ορίσετε αυτή τη διαδρομή. Είναι αρκετά απλό, παρόμοιο με αυτό που κάναμε νωρίτερα. Αλλά τι θα πάμε να παρατηρήσετε εδώ είναι ότι θα πάμε να έχουν ένα σύμβολο κράτησης θέσης. Έτσι, αν κάνουμε route.get κάθετο id μηνύματος. Έτσι ID τώρα είναι τι πρόκειται να να περάσει μέσα στον ελεγκτή. Αυτό πρόκειται να χρησιμοποιήσει το ελεγκτής που μόλις δημιουργήθηκε, BlogController στο viewPost. Και θα πάμε να ψευδώνυμο αυτό ως viewPost. Μεγάλη. Έτσι, τώρα θα πάμε να δημιουργήσουμε αυτή τη διαδρομή. Έτσι τώρα, αν πάμε εδώ και ανανεώστε αυτή τη σελίδα, εμείς στην πραγματικότητα δεν έχουν το νέο μας blog post. Έτσι, αυτό είναι ό, τι είχαμε δημιουργήσει νωρίτερα. Πολύ απλή σελίδα, αλλά εμφανίζει το θέση blog που μόλις δημιουργήσατε. Cool. Και αν μπορούμε πραγματικά να περάσουν από το σύνολο διαδικασία της δημιουργίας ενός νέου blog post, θα παρατηρήσετε ότι τα πάντα ανακατευθύνει σωστά. Αν πω, "Γεια σου. Είμαι Jonathan Ταν. " Ας πούμε, "Αυτό είναι το blog μου." Και το υποβάλλει, αυτό θα δημιουργήσει αυτό το νέο blog post με ID 2, η οποία αυξήσεις από ό, τι είχαμε στο παρελθόν και το εμφανίζει σωστά. Awesome. Οποιεσδήποτε ερωτήσεις; Ναι; ΟΜΙΛΗΤΗΣ 2: Μήπως Laravel λαβή εξυγίανση και τα πάντα για σας; ERIC Ouyang: Ναι. Έτσι, όταν είδαμε νωρίτερα, όταν κάναμε παχέος εντέρου κόλον εισόδου πάρει, ότι sanitates οποιαδήποτε SQL ενέσεις και εταζέρα ότι θα μπορούσαμε να θέλουμε να εκτελέσουν εάν είμαστε ένας κακόβουλος χρήστης της ιστοσελίδας. Έτσι Laravel χειρίζεται πολύ του ότι πίσω από τις σκηνές. Καλή ερώτηση. Έτσι, ας ρίξουμε μια ματιά στην αρχική σελίδα. Έτσι, αν εμείς πάμε πρώτα πίσω στο ελεγκτή για την αρχική σελίδα, θα παρατηρήσετε ότι δεν κάνει πολλά εδώ. Θα παρατηρήσετε ότι δεν είμαστε περνώντας σε αυτόν τον ελεγκτή κάτι ιδιαίτερα χρήσιμο. Είναι ακριβώς αυτό το αρχείο ευρετηρίου. Οπότε ας περάσει σε Αυτό το κάτι χρήσιμο. Και συγκεκριμένα, είμαστε πρόκειται να περάσει σε θέσεις. Και Laravel μας επιτρέπει να κάνει μετά από όλα, η οποία θα μας επιτρέψει να πάρει όλες τις θέσεις. Τώρα, αν πάμε πίσω στο index.php, θα δείτε, hey. Τίποτα δεν υπάρχουν ακόμα σχόλια. Αλλά αυτό που θέλουμε να κάνουμε εδώ είναι στην πραγματικότητα διέτρεξε, κάνει έναν βρόχο foreach πάνω από τις θέσεις που μας επιτρέπει να εκτυπώσετε τις θέσεις. Έτσι foreach θέσεις ως υστέρων, τι θέλουμε να κάνουμε είναι να εκτυπώσετε το περιεχόμενο του blog post. Αλλά ένα πράγμα που θα παρατηρήσετε είναι ότι είμαστε πραγματικά έγραψε το μεγαλύτερο του εν λόγω κώδικα ήδη, σε view.blade.php. Έτσι, αυτό που πάμε να κάνουμε στην πραγματικότητα είναι χρησιμοποιήστε ένα ωραίο χρήσιμο χαρακτηριστικό της λεπίδας και συνυπολογίσει αυτό το κοινό κώδικα. Έτσι, πάμε εδώ. Εμείς πάμε για να πάρει αυτό το περιεχόμενο εδώ, και τι θα πάμε να κάνουμε είναι να δημιουργήσετε ένα νέο φάκελο. Ας το ονομάσουμε Partials. Και εδώ, θα πάμε για να δημιουργήσετε ένα post.blade.php. Εδώ λοιπόν, έχουμε συνυπολογίζονται τον τρόπο με τον την οποία θέλουμε να εμφανίσετε αυτές τις θέσεις. Και εδώ τι θα κάνουμε, αντί του στην πραγματικότητα έχει άμεσα ότι η HTML, θα πάμε να χρησιμοποιήσει την εν λόγω οδηγία ονομάζεται περιλαμβάνουν blog.partials.post. Και τι θα πάμε να κάνουμε εδώ είναι να περάσει στη θέση της σελίδας. Έτσι τώρα, αν πάμε πίσω εδώ, θα παρατηρήσετε ότι η λειτουργία εξακολουθεί να είναι το ίδιο. Αλλά τώρα έχουμε αυτό συνυπολογίζονται έξω κώδικα, αυτό το HTML. Έτσι, μπορούμε να το χρησιμοποιήσουμε στο Δείκτη. Μέχρι εδώ, αυτό είναι πολύ απλή. Το μόνο που κάνουμε είναι να περιλαμβάνει blog.partials.post και πίνακα. Και κάπου να πριν, κάνουμε μετα θέση. Έτσι τώρα, αν πάμε πίσω στο Αρχική σελίδα, θα δούμε ότι, hey. Έχουμε μια λίστα με όλα τα blog θέσεις που είχαμε πριν. Μπορούμε ίσως να θέλετε να προσθέσετε κάποια "αν" όροι και "αλλιώς" συνθήκες έτσι ώστε αν δεν έχουμε οτιδήποτε σχετικά με το blog, θέλουμε να εμφανιστεί κάτι χρήσιμο. Όπως, hey. Δεν υπάρχει περιεχόμενο ακόμα στο blog. Και αν εσείς πραγματικά εξετάσουμε Κώδικα Διαχείρισης του Δικτύου για GitHub, θα δείτε ένα παράδειγμα του πώς το κάνουμε αυτό. Cool. Οποιεσδήποτε ερωτήσεις; Ναι. ΟΜΙΛΗΤΗΣ 2: Υποθέτω ότι απλά ένα θεμελιώδες ερώτημα. Πίσω στην πορεία. ERIC Ouyang: Ναι. Αν ρίξουμε μια ματιά στις διαδρομές. ΟΜΙΛΗΤΗΣ 2: Σε περίπτωση που η uses.blogcontroller σε θέση να δημιουργήσει, Τι μας κατευθύνουν προς; ERIC Ouyang: Ναι. Ναι. ΟΜΙΛΗΤΗΣ 2: Ή τι είναι that-- ERIC Ouyang: Έτσι, ρίξτε μια ματιά, λένε για παράδειγμα, αυτή η διαδρομή εδώ. Το πρώτο μέρος είναι η πραγματική URL που ο χρήστης θα πάει. Και αυτή η διάταξη εδώ, associative πίνακα, καθορίζει πώς θέλουμε να έχουμε το πράξη εφαρμογής για την αντιμετώπισή της. Έτσι χρησιμοποιεί είναι ο υπεύθυνος, η λειτουργία που θέλετε να καλέσετε, όταν ένα χρήστης πηγαίνει σε αυτό το URL. Έτσι viewPost εδώ ήταν μια συνάρτηση που ορίσαμε μέσα του BlogController-- ΟΜΙΛΗΤΗΣ 2: βλέπω. ERIC Ouyang: --so ότι εμείς μπορούν να καταστήσουν πραγματικότητα μια άποψη, εκτελούν μερικούς υπολογισμούς, αλληλεπιδρούν με τη βάση δεδομένων SQL. ΟΜΙΛΗΤΗΣ 2: Εντάξει. ERIC Ouyang: Και μετά το άλλο μέρος, "ως" είναι ένα ψευδώνυμο που χρησιμοποιούμε. Έτσι, αν παρατηρήσετε όταν δημιουργήσαμε τη μορφή, Θα παρατηρήσετε ότι το URL :: routecreatePost. Έτσι, αντικαθιστά το πραγματικό URL, έτσι ώστε δεν είμαστε σκληρά κωδικοποίησης αυτά σε τόσο μπορούμε να την αλλάξουμε μια φορά, ας πούμε, αν θέλαμε να μετονομάσετε. Αντί μετά την κάθετο νέα, θέλουμε να κάνουμε, όπως, π slash νέο απλά για να καθαρίσετε μέχρι URLs μας λίγο. Θα το αλλάξετε σε ένα σημείο μάλλον από ό, τι σε όλα τα διαφορετικά αρχεία. Cool. Αυτό είναι καλό. Έτσι τώρα έχουμε ένα πολύ βασική πλατφόρμα blog. Εμείς μάλλον θέλετε να προσθέσετε σε ένα κουμπί έτσι ότι μπορούμε να δημιουργήσουμε πραγματικά νέες θέσεις. Έτσι, αν ρίξουμε μια ματιά Στη διάταξη Μάστερ, έχουμε ένα τμήμα που ονομάζεται Επικεφαλίδα Δεξιά ότι έχουμε ακριβώς ορίζεται στην κορυφή. Έτσι, μπορούμε να προσθέσουμε κουμπιά για να η κορυφή του μπάλα. Έτσι, αν πάμε να index.blade.php, στην πραγματικότητα κάνουμε είναι να ορίσουμε τι πηγαίνει μέσα από εδώ. Έτσι, αυτό το τμήμα Κεφαλίδα Δεξιά, τι θα πάμε να κάνουμε είναι να προσθέσετε σε ένα κουμπί για να μεταβείτε στο URL που ορίζεται από την οδό νέα θέση. Ακριβώς για να το καθαρίσει και να κάνει είναι αρκετά και όλα Bootstrap, θα πάμε για να κάνει Αυτό το κουμπί προεπιλογών. Ας κάνουν μεγάλη για διασκέδαση. Και μέσα σε αυτό, θα μπορούσε να θέσει κάποιο κείμενο. Αλλά τι Bootstrap παρέχει είναι glyphicons. Έτσι, μπορούμε πραγματικά να προσθέσει στο ότι ωραίο μολύβι που είδαμε νωρίτερα. Glyphicon. Glyphicon-μολύβι. Έτσι, αυτό θα μας επιτρέψει να θέσουμε σε μια εικόνα αντί για κείμενο. Τώρα, αν δεν σταματήσει, αυτό θα καθορίσει αυτή την ενότητα. Και, hey. Έχουμε ένα ωραίο κουμπί που μας ενώνει άμεσα με την προσθήκη ενός blog post σελίδα. Έτσι, έχουμε μια αρκετά απλό blog. Μπορούμε να προσθέσουμε πράγματα σε αυτό. Αλλά αυτό που αναμένουν γενικά από τα blogs σχολιάζει. Γι 'αυτό είναι πολύ σημαντικό για εμάς να έχουμε, Δηλαδή, αν κάποιος άλλος επισκέπτεται μια ιστοσελίδα και του αρέσει πολύ η θέση ότι μπορούν να συμμετάσχουν σε συζήτηση με άλλους ανθρώπους που επισκέπτονται την σελίδα. Έτσι θα πάμε να πάει και να δημιουργήσει ένα νέα βάση δεδομένων πίνακα και ένα νέο μοντέλο έτσι ώστε να μπορούμε να συσχετίσουμε Παρατηρήσεις σχετικά με τις θέσεις. Έτσι το πρώτο βήμα, όπως και πριν, είναι ότι θα πρέπει να εκτελέσετε μια μετανάστευση. Έτσι, όπως και πριν, κάνουμε php τεχνίτης μεταναστεύσουν: κάνει. Και θα πάμε να δημιουργήσουμε ένα ονομάζεται create_comments_table. Αυτό θα δημιουργήσει ένα αρχείο ότι έχει νέα μεταναστευτική μας. Και θα πάμε να, όπως πριν, καθορίζουν ένα νέο τραπέζι. Έτσι Schema :: δημιουργήσει ένα πίνακα που ονομάζεται σχόλια. Αυτή η λειτουργία εδώ. Και μέσα σε αυτό τον πίνακα αυτό θα πάμε να κάνουμε για πρώτη φορά, όπως πριν, ορίσετε ένα ID. Αυξάνει ID. Εμείς πάμε για να επιτρέπει στους χρήστες να συνδέσουν το όνομά τους με ένα συγκεκριμένο σχόλιο. Εμείς πάμε για να έχουν κάποιο περιεχόμενο που πηγαίνει μαζί με αυτό, το περιεχόμενο του κειμένου. Και εδώ τι θα πάμε να κάνουμε είναι κάτι διαφορετικό. Εμείς πάμε για να δημιουργήσει έναν ακέραιο αυτό ονομάζεται post_id που πρόκειται να δηλώσει ποια θέση ένα συγκεκριμένο σχόλιο πηγαίνει με. Επιπλέον, είμαστε πραγματικά πρόκειται να ορίσετε ένα ξένο κλειδί περιορισμός σε αυτό. Έτσι, MySQL θα επιβάλει αυτό. Δεν προσπαθούμε να τον αριθμό του σχολίου 5 να δημοσιεύσετε 5000 αν δεν έχουμε είχε 5.000 θέσεις σε αυτό. Έτσι, αυτό που κάνουμε εδώ, κάνουμε ξένων post_id πρόκειται να συνδέεται με το πεδίο αναγνωριστικού από τις θέσεις πίνακα. Και θα κάνουμε πραγματικά κάτι άλλο χρήσιμο, είναι onDelete. Έτσι, αν διαγράψουμε κάποια μετά την από τη βάση δεδομένων, ότι θέλουμε να καταρράκτης ο διαγράφει για σχόλια καθώς και. Επειδή δεν είναι πολύ χρήσιμη για να έχουμε τα σχόλια στις αναρτήσεις ότι δεν υπάρχουν. Και τελικά, όπως και πριν, είμαστε πρόκειται να θέσει γραμματόσημα χρόνο σε αυτό. Και όπως πριν, θα πάμε να έχουν η αντίστροφη μετανάστευση είναι ρίχνοντας το τραπέζι σχόλια. Έτσι τώρα, αν πάμε πίσω εδώ, θα πάμε να εκτελέσετε αυτήν την μετανάστευση, τεχνίτης μεταναστεύσουν. Και τώρα έχει εφαρμοστεί αυτό μετανάστευσης που μόλις δημιουργήσατε. Έτσι, αν έχουμε μια ματιά στο phpMyAdmin, κάνουμε, στην πραγματικότητα, τώρα έχουν ένα σχόλιο πίνακα που έχει η δομή που μόλις ορίσατε. Έτσι, όπως και πριν, είμαστε πρόκειται να δημιουργήσει ένα νέο μοντέλο στην αφηρημένη πίνακα του SQL ότι μόλις δημιουργήσατε. Ας προσθέσουμε ένα νέο αρχείο. Εμείς πάμε για να το ονομάσουμε comment.php. Και αυτό είναι πραγματικά πρόκειται να είναι αρκετά απλή με μια μικρή αλλαγή από ό, τι είχαμε πριν. Έτσι κατηγορία Σχόλιο εκτείνεται Εύγλωττον. Και τι θα πάμε να κάνουμε εδώ είναι καθορίζουν μια λειτουργία που είναι η σχέση με άλλα μοντέλα. Έτσι θα πάμε να έχουν μια λειτουργία μετά εδώ που επιστρέφει αυτή τη σχέση. Έτσι είμαστε διευκρινίζοντας ότι Αυτό ανήκει να δημοσιεύσετε, λέγοντας ότι υπάρχει μία θέση ότι αυτό το σχόλιο ανήκει. Αυτό έχει πράγματι να είναι Το κεφαλαίο P για το μοντέλο. Και τώρα ακριβώς στην άλλη πορτάκι πλευρά, πρέπει να πούμε ότι, hey. Δημοσιεύσεις έχετε σχόλια. Έτσι, αυτό που πάμε να κάνουμε είναι ορίζουν τα σχόλια δημόσιο λειτούργημα. Και εδώ επιστρέφεται Αυτό έχει πολλές σχόλιο. Έτσι τώρα μαγικά όταν έχουμε μια θέση, μπορούμε να πάρουμε τα σχόλια χαρακτηριστικό και αυτό θα το συμπληρώσετε με το πληροφορίες από τη βάση δεδομένων. Ας πραγματικά να περάσει και προσθέσετε ένα νέο χαρακτηριστικό στο αρχείο την άποψή μας έτσι ώστε μπορούμε και οι δύο οθόνη και να δημιουργήσει σχόλια. Έτσι θα πάμε να ορίσετε ένα νέο τμήμα. Ας το διαχωρισμό με μια οριζόντια κανόνα. Τμήμα id = "σχόλια". Τι θα πάμε να κάνουμε εδώ είναι, όπως και πριν, διέτρεξε όλα τα σχόλια. Έτσι, στην πραγματικότητα πώς το κάνουμε αυτό είναι, όπως ανέφερα, αρκετά μαγικό. Κάνουμε σχολιάσετε. Και τότε μπορούμε να το κάνουμε αυτό για κάθε βρόχο πάνω από κάθε ένα από τα σχόλια. Και τι θα πάμε να κάνουμε είναι τάξη div σχόλιο, και θα πάμε να πραγματικά εκτυπώσετε αυτό το σχόλιο. Έτσι εμφανίσει ότι hey, Σχολιάστε name-- το πρόσωπο που καταχώρησε αυτό comment-- λέει dot dot dot. Εμείς πάμε για να θέσει αυτό σε ένα μπλοκ παραθέτω, απλά για να κάνει το βλέμμα συμπαθητικό. Και στη συνέχεια να σχολιάσει το περιεχόμενο απόσπασμα μπλοκ. Και foreach. Μέχρι τώρα αυτό πρόκειται να βρόχο μέσα από όλα τα σχόλια ότι σχετίζεται με κάθε μία από τις θέσεις και εμφανίζουν κάθε ένα από αυτά τα σχόλια. Πάω να προσθέσετε ένα άλλο τμήμα κάτω εδώ, η οποία μας επιτρέπει να προσθέσετε ένα σχόλιο. Έτσι h3 class. Βάλτε έναν τίτλο εδώ. Προσθέστε ένα σχόλιο. Και θα πάμε να καθορίσει μια νέα μορφή. Έτσι, όπως και πριν, είμαστε πρόκειται να κάνει δράση μορφή. Και εδώ, η νέα δράση είμαστε πρόκειται να ορίσετε ένα νέο χειριστήριο που μας επιτρέπει να ανταποκριθεί στις δημοσιεύσετε οι αιτήσεις για τη δημιουργία σχόλια. Έτσι createComment URL :: διαδρομή. Πάω να περάσει στην παράμετρο εδώ. Η ταυτότητα του Post ότι δημιουργούμε σχόλιο για. Και στη συνέχεια η μέθοδος αυτή μορφή θα είναι μετά. Τώρα θα πάμε να προσθέσετε στο δύο πεδία, ομάδα μορφή. Αυτό πρόκειται να είναι μια είσοδο με το το όνομα "όνομα" και class = "μορφή ελέγχου», πληκτρολογήστε = "κείμενο", και με την κράτησης θέσης = "Το όνομά σας". Είμαστε, επίσης, πρόκειται να καθορίσει την ένα άλλο πεδίο φόρμας, η οποία πρόκειται να είναι ένα κείμενο περιοχή, όπως είχαμε πριν. Ακριβώς όπως και πριν, καλέστε το περιεχόμενο. Class = "μορφή ελέγχου." Placeholder = "Γράψτε εδώ." Και ακριβώς έτσι ώστε να μπορεί να το υποβάλει στην πραγματικότητα, υποβάλλουν το είδος και την κατηγορία = "btn btn-πρωτεύον." Κλείστε τη φόρμα. Κλείστε αυτή την ενέργεια. Έτσι τώρα, αν έχουμε ανανεώστε αυτή τη σελίδα όπου έχουμε, ας πούμε, μια συγκεκριμένη θέση. Πρέπει να κάνετε επανεκκίνηση του διακομιστή. PHP τεχνίτη εξυπηρετούν. Επανεκκίνηση αυτό. Πρέπει να ορίσετε τη διαδρομή. Αλλά για τώρα, ας πάρει αυτό έξω, έτσι ώστε να μπορούμε να σας δείξουμε πραγματικά ποια είναι η σελίδα μοιάζει, και στη συνέχεια, θα δημιουργήσει πραγματικά αυτή την οδό. Έτσι, hey. Έχουμε αυτή τη νέα μορφή κάτω εδώ έτσι ώστε να μπορέσουμε να δημιουργήσουμε σχόλια. Ας πραγματικά ορίζουν μια λειτουργία εντός της μονάδας ελέγχου έτσι ώστε να μπορέσουμε να προσθέσουν σχόλια. Ας πάμε πίσω. Και μέσα blogcontroller.php, τι θα πάμε να κάνουμε είναι να δημιουργήσουμε μια νέα λειτουργία καλείται να δημιουργήσει σχόλιο. Δημόσια createComment λειτουργία. Αυτό πρόκειται να έχουμε μια ενιαία παράμετρος, η ταυτότητα των δημοσιεύσεων ότι είμαστε σχολιάζοντας. Και όπως και πριν, είμαστε πρόκειται να πάρει την πρώτη του θέση. Έτσι δημοσιεύσετε, findOrfail id. Στη συνέχεια, θα πάμε για να δημιουργήσετε ένα νέο σχόλιο. Έτσι σχόλιο = νέο σχόλιο. Σχόλιο όνομα = Είσοδος :: πάρει το όνομα. Σχόλιο περιεχόμενο = η ίδια νέα γραμμή σε διαλείμματα της εισόδου :: πάρει το περιεχόμενο. Και τέλος, θα πάμε να πρέπει να συνδέουν αυτό το σχόλιο με τα δοκάρια. Έτσι θα πάμε να χρησιμοποιήσετε Αυτή η λειτουργία, σχόλια, ότι μας επιτρέπει να αποθηκεύσετε αυτή η σχέση. Μέχρι τώρα αυτό το σχόλιο θα έχει αυτόματα η θέση ταυτότητας. Θα μπορούσαμε επίσης να το ρυθμίσετε με το χέρι, αλλά αυτό είναι πιο εύκολο να το διαβάσετε, στο μέτρο η λειτουργία πηγαίνει. Και μετά μπορούμε να εκτελέσουμε αυτό, αυτό που θέλουμε να κάνουμε είναι ανακατευθύνει τον χρήστη στην διαδρομής που προσδιορίζουν viewPost με τη διάταξη με την παράμετρο της μετα ταυτότητας. Και τώρα, έτσι ώστε αυτή η πραγματικότητα λειτουργίες, πρέπει να ορίσουμε αυτή τη διαδρομή. Διαδρομή :: υστέρων. Και τώρα θα πάμε να καλέσετε αυτό μετά την κάθετο ID κάθετο σχόλιο. Array χρησιμοποιεί τη νέα λειτουργία ότι μόλις δημιουργήσατε. BlogController. CreateComment ως createComment. Μεγάλη. Μέχρι τώρα ελπίζουμε, αν ανανεώστε αυτή τη σελίδα και να προσθέσετε σε ένα σχόλιο, ας πούμε, ο David Μάλαν. "Ας ελπίσουμε ότι αυτό λειτουργεί." Υποβολή. Εμείς, στην πραγματικότητα, έχουν παρατηρήσεις σχετικά με αυτό το blog. Cool. Έτσι τώρα έχουμε μια αρκετά λειτουργική θέση blog. Εμείς απλά θα προσθέσετε ένα ζευγάρι τσιμπήματα έτσι ότι έχουμε κάποια πιο χρήσιμο πληροφορίες σχετικά με τις θέσεις αυτές. Έτσι, αν πάμε πίσω στο πρώτη σελίδα, δεν έχουμε καμία αίσθηση πόσα σχόλια σε κάθε μία από αυτές τις θέσεις. Έτσι, αυτό που είμαστε στην πραγματικότητα θα να κάνουμε είναι, μέσα στο μοντέλο μας, ορίσουμε μια συνάρτηση βοηθού που επιτρέπει μας για να καθορίσετε τον αριθμό των σχολίων ότι πάει με μια συγκεκριμένη θέση. Έτσι θα πάμε να δημιουργήσουμε μια βοηθητική λειτουργία. Δημόσια λειτουργία. GetNumCommentsStr. Έτσι μια συμβολοσειρά που καθορίζει τον αριθμό των παρατηρήσεων που πηγαίνουν μαζί με αυτό. Και τι θα πάμε να κάνουμε είναι να πούμε ότι num = Αυτό σχόλια μετράνε. Έτσι θα πάμε να μετρήσει ο αριθμός των παρατηρήσεων. Και αν ο αριθμός αυτός ισούται με 1, είμαστε ακριβώς πρόκειται να επιστρέψει 1 σχόλιο. Και στη συνέχεια, αλλιώς, θέλουμε να επιστρέψουμε η συνένωση των num και σχόλια, έτσι ώστε να πάρει ο πλουραλισμός σωστή. Απλά κάνουν αυτό μια και μόνη προσφορά. Ένα σχόλιο. Και τώρα μπορούμε να χρησιμοποιήσουμε αυτή τη λειτουργία απευθείας μέσα από την άποψή μας. Έτσι, αν πάμε πίσω στο μερική θέσεις που δημιουργήσαμε, τώρα θέλουμε πραγματικά να εμφανίζει τον αριθμό των σχολίων. Έτσι, αυτό που μπορούμε να κάνουμε είναι υστέρων, χρησιμοποιήστε αυτή τη λειτουργία ότι μόλις δημιουργήθηκε για να εμφανίζει τον αριθμό των σχολίων. Έτσι, αν τώρα ανανεώσετε, το , στην πραγματικότητα, οθόνη ο αριθμός των παρατηρήσεων που πηγαίνουν μαζί με αυτό. Αν θέλαμε να είναι φανταχτερό, αν πραγματικά δούμε τον κώδικα της διανομής, μπορούμε πραγματικά να συνδέσει αυτό στις παρατηρήσεις. Αν θυμάστε, ορίσαμε στο πλαίσιο της δείτε ότι αυτό έχει σχόλια τμήμα Ι.Δ. Έτσι, αν πραγματικά ήθελε να συνδέσει απευθείας στο τμήμα σχολίων, τι εμείς θα κάνουμε εδώ είναι a href URL του viewPost διαδρομής. Περάστε το αναγνωριστικό σειράς μετα ταυτότητας. Και μετά θέλουμε να πάμε σε συγκεκριμένα το τμήμα σχολίων. Εδώ ας κλείσει το ένα tag. Έτσι τώρα, αν έχουμε ανανεώσετε αυτό σελίδα, κάνουμε κλικ σε αυτό. Θα πάμε κατευθείαν στο το τμήμα σχολίων. Αν είχαμε μια μεγαλύτερη θέση, μπορείτε να πραγματικά να δείτε αυτό το αναπήδηση προς τα κάτω. Αλλά θα παρατηρήσετε ότι είναι όχι στο επάνω μέρος της σελίδας. Cool. Μεγάλη. Έτσι, αυτό είναι μια αρκετά απλή παράδειγμα της κάτι απλό ότι μπορείτε να κάνετε με Laravel. Αλλά μπορείτε να παρατηρήσετε ότι εδώ έχουμε κάνει πολλά πράγματα με αρκετά μικρή ποσότητα του κώδικα. Laravel μας επιτρέπει να κάνουμε το SQL ερωτήματα πίσω από τα παρασκήνια. Κάνει την αποχέτευση για εμάς πίσω από τις σκηνές. Μας επιτρέπει να κάνουμε αυτές τις σχέσεις πολύ εύκολα χωρίς να χρειάζεται εμάς να κάνει οποιαδήποτε SQL δηλώσεις ενταχθούν σε συνδυάζουν τα σχόλια με ό, τι τις θέσεις. Μας επιτρέπει να το κάνετε αυτό κληρονομιά των προτύπων έτσι ώστε να μπορούμε να ορίσουμε αυτές τις φωλιές αρχεία έτσι δεν είμαστε οι ίδιοι επανάληψη, ακριβώς όπως όταν είχαμε ότι απεικόνιση των blog θέσεις ότι δεν έχουμε να αντιγραφή και επικόλληση του κώδικα. Και από εδώ μπορείτε να δημιουργήσετε όλο και πιο πολύπλοκες εφαρμογές. Μπορείτε να φανταστείτε αν εμείς ήθελε να εφαρμόσει log-in, θα μπορούσαμε να πούμε, να φέρει σε τρίτους πλαίσιο που μας επιτρέπει να το κάνουμε αυτό. Υπάρχει μια δέσμη από αυτά που είναι πραγματικά, πραγματικά μεγάλη που μπορεί να κάνει, όπως, ανάκτησης κωδικού πρόσβασης. Και αυτό θα σας στείλει ένα επαναφέρετε τον κωδικό πρόσβασης ηλεκτρονικού ταχυδρομείου. Μπορούμε να εφαρμόσουμε την άδεια έτσι ώστε να μπορώ να δημιουργήσω μια θέση, αλλά κάποιος άλλος δεν μπορεί να το επεξεργαστεί. Μπορούμε να εφαρμόσουμε λειτουργικότητα να διαγράψετε τις δημοσιεύσεις. Αλλά μπορείτε να δείτε εδώ ότι έχουμε αρκετά πολύ όλα τα στοιχειώδη συστατικά να χτίσει μερικά πραγματικά, πραγματικά, δυναμικές και συναρπαστικές εφαρμογές web. Έτσι, με αυτό, νομίζω ότι είμαστε καλά. Μήπως εσείς έχετε οποιεσδήποτε ερωτήσεις; Ναι; ΟΜΙΛΗΤΗΣ 3: Πώς σας πάρει στατικό περιεχόμενο; ERIC Ouyang: στατικό περιεχόμενο. Έτσι είδατε πριν, όταν είχαμε Το δικαίωμα αυτό εδώ, αυτό το περιεχόμενο διάταξη, θέα μάρκα, είχαμε αυτό χωρίς αυτή την σειρά των υστέρων. Blog.index, είχαμε αυτό απλά ως ένα στατικό αρχείο. Έτσι, αν δεν περάσει οτιδήποτε κατά μήκος σε αυτό, αυτό θα καταστήσει μόνο το HTML απευθείας. Αλλά αν περνάμε σε αυτό το συνειρμικό σειρά των θέσεων, η οποία είναι δυναμικά τραβιέται από τη βάση δεδομένων, εμείς μπορεί να κάνει η σελίδα δυναμική. Cool. Οποιεσδήποτε άλλες ερωτήσεις; ΟΜΙΛΗΤΗΣ 3: Πώς θα συγκρίνατε Laravel με ίσως κάποιες άλλες επιλογές; ERIC Ouyang: Σίγουρα. Ναι. Έτσι Laravel is-- ότι είναι μια μεγάλη question-- μία από τις πολλές επιλογές για πλαισίων ιστοσελίδων. Έτσι, Ruby on Rails είναι ένα που είναι δημοφιλής. Πιστεύω ότι το Twitter χρησιμοποιείται για να είναι υλοποιηθεί με το Ruby on Rails. Νομίζω ότι έχω αλλάξει από τότε. Υπάρχει ένα άλλο που ονομάζεται FuelPHP. Έτσι, Ruby on Rails χρησιμοποιεί τη γλώσσα Ruby και εφαρμόζει πολλά από τα πράγματα MVC ότι βλέπουμε εδώ. FuelPHP είναι ένα άλλο πλαίσιο PHP. Django είναι ένα από τα αγαπημένα μου. Είναι ένα πλαίσιο web για την Python. Έτσι, μπορείτε να γράψετε Web App σας στην Python. Έτσι, υπάρχει ένας τόνος από αυτές τις επιλογές. Laravel, νομίζω, από και μεγάλο είναι το αγαπημένο μου δικαίωμα τώρα για την PHP μόνο και μόνο επειδή των συστατικών ότι μιλήσαμε νωρίτερα. Είναι το Συνθέτης ενεργοποιημένη. Περιλαμβάνει ένα πραγματικά, πραγματικά εκφραστικό σύστημα ORM. Επίσης, έχει ένα πραγματικά φοβερό προτυποποίηση γλώσσα που μερικοί από τους άλλους απλά δεν παρέχουν. Και μεταναστεύσεις. Μεταναστεύσεις είναι φοβερό, καθώς και. Cool; Awesome. Καλά, ευχαριστώ πολύ για βλέποντας αυτό το σεμινάριο, και καλή τύχη για το τελικό έργα σας.