[MUSIC PLAYING] ERIC Ouyang: Hey, semua orang. Selamat Datang. Ini adalah Gedung Dinamis Web Apps dengan Laravel. Nama saya Eric Ouyang. Saya seorang mahasiswa belajar IPS dengan sekunder dalam ilmu komputer, dan saya tinggal di Adams Rumah di sini di Harvard. Jadi Laravel, paling inti, adalah kerangka aplikasi web MVC. Jadi seperti apa yang kalian telah melakukan dengan CS50 Keuangan, Laravel adalah kerangka kerja yang memungkinkan Anda untuk membangun aplikasi web dinamis. Jadi Anda bisa memikirkan itu dalam beberapa hal sebagai perpanjangan dari jenis barang Anda sudah melakukan di CS50 Keuangan, tetapi sistem yang jauh lebih kuat, banyak lebih elegan dalam beberapa hal, dan memberikan banyak fungsionalitas untuk Anda untuk membangun cukup kompleks aplikasi web. Jadi mari kita pergi melalui beberapa fitur kunci, dan kemudian kita akan menyelam ke dalam contoh membangun blog aplikasi dengan Laravel. Jadi salah satu hal pertama yang membedakan dari jenis MVC pekerjaan bahwa Anda telah melakukan dengan CS50 itu mencakup mesin ORM. Jadi ORM singkatan objek pemetaan relasional. Jadi ini memungkinkan Anda untuk membangun lapisan abstraksi antara database dan pengendali Anda. Jadi tidak seperti di CS50 Finance mana Anda langsung membuat query, lapisan ORM memungkinkan Anda untuk abstrak yang jauh dan menciptakan model yang lebih kuat daripada Anda bisa langsung dengan query SQL. Hal lain yang benar-benar membantu adalah template diwariskan. Jadi, Anda akan melihat di CS50 Keuangan, Anda akhirnya menulis ulang banyak hal, di mana tempat Anda bisa berpotensi menggunakan kembali hal-hal, Anda tidak bisa. Jadi di sini di Laravel, Anda dapat menggunakan apa dikenal sebagai mesin template pisau untuk membuat tata letak utama. Dan dari sana, Anda dapat mewarisi sehingga sub-template benar-benar dapat termasuk unsur-unsur dalam template dasar yang lebih besar. Migrasi. Jadi ini adalah fitur yang cukup standar pada yang paling modern kerangka kerja aplikasi web. Jadi ini memungkinkan Anda untuk mewakili perubahan skema database dalam kode. Jadi tanpa akan mengatakan, phpMyAdmin, Anda benar-benar dapat membuat migrasi ini di mana Anda mewakili database skema perubahan dalam kode secara langsung. Dan ini memungkinkan Anda to-- terutama jika Anda memiliki beberapa orang yang bekerja di web application-- yang sama melacak perubahan ini, mengatakan di GitHub, atau repositori lainnya. Jadi ini benar-benar membantu dan meringankan kebutuhan untuk, katakanlah, lulus sekitar banyak SQL kesedihan. Dan akhirnya, Komposer adalah sesuatu yang benar-benar berguna yang memungkinkan Anda untuk menggunakan lain kode orang untuk melakukan hal-hal yang mengagumkan. Jadi Laravel yang disusun sebagai beberapa paket komposer. Jadi mengatakan jika Anda ingin membawa dalam paket otentikasi atau jika Anda ingin membawa beberapa semacam script generator atau admin antarmuka, Anda bisa plug and play komponen-komponen dengan Komposer. Jadi mari kita mulai. Setiap pertanyaan dari Anda orang sebelum kita mulai? Tidak ada pertanyaan? Keren. Jadi langkah pertama adalah menginstal Komposer. Jadi Komposer memungkinkan Anda untuk mengelola dependensi ini, apakah itu kerangka Laravel atau beberapa ekstensi pihak ketiga lainnya. Perintah pertama memungkinkan Anda untuk men-download Komposer, dan perintah kedua memungkinkan Anda untuk memindahkannya ke folder bin lokal Anda sehingga Anda dapat menjalankan Komposer langsung melalui terminal. Setelah itu, pergi ke depan dan membuat proyek Laravel baru. Kami benar-benar akan menggunakan beberapa contoh kode bahwa saya telah mengumpulkan untuk membuat blog ini. Tapi jika Anda mulai dari awal, Anda akan menggunakan perintah ini di sini, komposer menciptakan proyek, laravel slash laravel, dan kemudian nama proyek Anda. Dan itu akan mencakup semua kode distribusi untuk memulai sebuah proyek Laravel baru. Jadi untuk CS50 proyek akhir Anda, Anda akan mungkin ingin menggunakan perintah itu. Tapi kita akan mulai dengan ini. Jadi setelah Anda melakukan itu, Anda akan mendapatkan jumlah yang cukup luas file dalam blog50. Jadi mari kita pergi melalui beberapa komponen tersebut. Anda akan melihat di rute ini direktori, ada folder aplikasi. Di dalam folder aplikasi, ada beberapa folder membantu. Dari catatan untuk memulai dengan adalah folder config ini. Jadi ini set up bagaimana aplikasi web Anda akan, katakanlah, mengotentikasi orang atau hal tunai atau koneksi ke database. Dan apa yang benar-benar membantu adalah bahwa Laravel memungkinkan Anda untuk mengatur berbeda lingkungan pengembangan. Jadi apa yang kita lakukan di sini adalah jika kita pergi di bawah folder lokal, ada file database.php. Dan Anda akan melihat di sini bahwa kita mengatur koneksi MySQL yang memungkinkan individu untuk menghubungkan ke server MySQL yang langsung pada alat CS50. Dan kami menghubungkan ke database yang saya set disebut Blog50. Jadi mari kita benar-benar pergi ke depan dan menjalankan versi kerja ini, hanya untuk mendapatkan rasa apa aplikasi yang kita sedang membangun seperti. Jadi saya memiliki salinan Blog50 ini selesai. Jadi Laravel sebenarnya telah dibangun di server Anda dapat menjalankan langsung dari baris perintah. Jadi ini mirip dengan PSet sebelumnya ketika Anda benar-benar membangun server sendiri di C. Jadi mereka memiliki satu built in sehingga Anda dapat menjalankan aplikasi Laravel Anda langsung dari baris perintah. Jadi jika kita melakukan php tukang melayani, ini akan meluncurkan server pembangunan pada port 8.000. Jadi, jika kita pergi ke host lokal 8.000, Anda akan melihat bahwa, hei. Kami memiliki blog kita dan berjalan. Jadi Laravel sini adalah menghasilkan halaman depan blog kita. Aplikasi yang sangat sederhana. Tapi ada beberapa fitur yang sangat bagus bahwa ia menyediakan bawah tenda. Jadi aplikasi blog mudah. Jika kita ingin membuat sebuah tulisan, kita dapat mengklik tombol itu. Kita dapat mengatakan, "Hei, semua orang. Ini adalah benar-benar menyenangkan seminar, "misalnya. Dan menulis sesuatu di sini. Teks di sini. Jika kita klik Submit, Anda akan melihat bahwa blog baru posting telah ditambahkan ke Halaman depan blog. Jika kita kembali ke sini, Anda akan melihat bahwa ada beberapa komentar yang sudah di blog. Jadi jika kita scroll ke bawah, Anda akan melihat bahwa Jonathan Tan mengatakan bahwa ia sangat tertarik dengan posting ini. Jadi kita akan pergi ke bagaimana objek pemetaan relasional memungkinkan Anda untuk melakukan hubungan ini dalam cara yang cukup mulus juga. Keren. Pertanyaan tentang fungsi dari apa yang kita akan membangun? Keren. Jadi mari kita mulai dengan benar-benar menciptakan tabel database. Jadi ingat bahwa di CS50 Keuangan, Anda mengumpulkan meja untuk pengguna serta untuk saham dalam portofolio Anda. Jadi seperti yang telah disebutkan sebelumnya, apa yang kita gunakan dalam Laravel adalah sesuatu yang dikenal sebagai migrasi. Jadi, jika kita kembali ke Kode distribusi di sini, perintah pertama yang membantu yang Laravel menyediakan adalah perintah bermigrasi ini. Jadi kita bisa melakukan php tukang bermigrasi: membuat. Jadi ini memungkinkan kita untuk membuat migrasi. Dan kemudian kita akan ingin untuk membuat migrasi disebut create_posts_table, yang akan berada di tempat kita akan menjadi menyimpan posting blog kita. Dan Anda akan melihat di sini bahwa berjalan melalui beberapa kode yang sebenarnya menghasilkan file dengan cap waktu di atasnya. Jadi, jika kita pergi dan melihat database, kita akan melihat di bawah Migrasi bahwa itu menciptakan File kosong bagi kita yang memiliki kode boilerplate dengan nama bahwa kita ditentukan, membuat tabel posting. Dan memiliki dua fungsi di dalamnya. Up adalah apa yang kita ingin menjalankan ketika migrasi diterapkan ke database. Dan bawah adalah apa yang akan kita lakukan ketika kita ingin membalikkan migrasi. Jadi di sini mari kita mulai keluar dengan menulis migrasi ini. Jadi ada kelas membantu di Laravel disebut Schema. Jadi kita akan menjalankan skema :: buat. Dan kita akan membuat meja disebut posting. Dan di sini kita menerapkan ini menggunakan fungsi. Dan dalam sini, kita akan benar-benar menentukan isi meja kami. Kita akan membuat ID yang, yang merupakan auto-incrementing. Selain itu, kita akan menciptakan lapangan yang merupakan judul posting blog kita. Kami juga akan menciptakan lapangan untuk menyimpan teks dari posting blog kita. Dan akhirnya, kita akan untuk menyimpan beberapa cap waktu ketika posting kami diciptakan dan ketika itu diperbarui. Dan untuk turun, itu cukup sederhana. Semua kami ingin lakukan adalah penurunan tabel yang telah kita buat. Hebat Sekali. Ada pertanyaan? Jadi sekarang jika kita pergi ke depan dan-- sebenarnya, host lokal, biarkan aku menghapus apa yang kita miliki sebelumnya. Pergi ke Database. Aku akan menghapus apa yang kita miliki sebelumnya. Jatuhkan ini dan membuat database baru Blog50. Jadi sekarang apa yang ajaib Bagian sinilah kita dapat menerapkan migrasi ini secara langsung ke database menggunakan baris perintah Alat. Jadi jika kita melakukan php tukang bermigrasi, Anda akan melihat bahwa, hei. Ini menciptakan tabel migrasi, yang akan kita lihat di dalam sedikit, dan itu diterapkan migrasi pertama ini. Jadi kita melihat Blog50, Anda akan melihat bahwa itu dibuat dua meja untuk kita. Pertama adalah tabel migrasi ini. Jadi, jika kita menelusuri ini, Anda akan melihat bahwa tabel ini cukup mudah. Ini hanya mengatakan bahwa, hei. Kami telah menerapkan migrasi ini. Kami kembali dan melihat posting. Anda akan melihat bahwa struktur adalah apa yang kita telah meminta itu. Kami memiliki ID auto-incrementing. Kami memiliki string untuk menyimpan judul, dan kolom teks untuk menyimpan konten. Hebat Sekali. Keren. Pertanyaan tentang migrasi pekerjaan, bagaimana kita bisa menerapkannya? Tak Ada? Keren. Jadi sekarang kita akan pergi ke depan dan benar-benar membuat model. Jadi kita ingin membuat model tulisan yang menyimpan sebuah abstraksi dari database. Jadi daripada melakukan query MySQL langsung, kita akan buat. Jadi kita harus membuat folder di sini disebut model. Dan di dalam sini, kita akan membuat file bernama post.php. Di dalam file PHP ini, kita akan membuat pos kelas yang meluas fasih. Fasih adalah nama dari ORM mesin yang Laravel menyediakan. Dan di sini, kita bisa berharap bahwa Anda benar-benar perlu untuk menulis beberapa kode. Kita akan menulis beberapa fungsi pembantu nanti. Tapi di luar kotak, ini akan sudah mengakui apa yang ada di database dan kita dapat mengakses, mengatakan, teks posting blog kita atau judul, dan menciptakan hal-hal secara langsung dengan cukup banyak tanpa kode apapun. Jadi itulah salah satu komponen ajaib. Dan angin setelah kelas ini lebih sepenuhnya matang, kami akan memasukkan informasi tentang apa itu terkait dengan, sehingga komentar. Juga membuat fungsi jadi kita benar-benar dapat langsung mendapatkan URL dari halaman posting blog. Keren. Pertanyaan tentang itu? Tak Ada. Keren. Jadi sekarang setelah kita memiliki model kami, kami ingin membuat controller yang mampu berinteraksi dengan model ini, dan kemudian database. Jadi jika kita melihat pada BlogController, Anda akan melihat bahwa tidak ada banyak di sini sekarang. Semua ada adalah fungsi index yang menghasilkan halaman rumah, tapi tanpa apa-apa ada untuk menampilkan belum. Jadi fungsi pertama bahwa kita akan membuat adalah salah satu yang memungkinkan kita untuk membuat posting blog. Jadi kita akan mendeklarasikan Fungsi baru yang disebut NewPost. Dan di dalam sini hanya, kita akan untuk mengatur tata letak halaman ini menjadi membuat versi, jika Anda ingat dari CS50, template ini disebut blog.new, yang kita akan membuat dalam sedikit. Anda akan melihat di sini on line enam yang kita ditentukan variabel ini, tata letak. Dan jika kita melihat di folder Views, ada folder Layouts, yang termasuk file HTML yang sangat dasar. Dan catatan, Anda akan melihat bahwa kita memiliki wadah ini disini yang menghasilkan konten. Jadi dalam template kita apa yang kita akan lakukan adalah menciptakan apa yang akan menjadi diganti langsung dalam tata letak ini. Jadi kita mengatakan bahwa kita ingin membuat template disebut blog.new. Tapi di dalam Blog, ada belum template baru ini. Jadi kita akan membuat file bernama new.blade.php. Ini memberitahu Laravel yang PHP file ini harus akan diberikan dengan template engine blade. Jadi ini adalah cukup File langsung. Ini akan menjadi bentuk dimana kita benar-benar menambahkan dalam posting blog. Jadi keajaiban di sini dari warisan adalah bahwa, hei. Kami ingin menentukan bahwa Bagian, bagian isi di sini, yang digambarkan olehsection danstop. Jadi apa yang ada di antara sini akan diganti ke dalam tata letak utama. Dan di sini apa yang ingin kita lakukan adalah sangat sederhana membuat file HTML baru. Mari kita tambahkan judul cepat. Menambahkan posting blog. Dan di dalamnya, kami akan membuat formulir. Formulir ini akan memiliki tindakan. Dan ini akan menjadi sesuatu yang bahwa kita mengganti nanti, dan kita akan melihat bagaimana Routing cocok menjadi sini. Tapi kami hanya akan menentukan untuk saat ini bahwa ini pergi ke sebuah URL dengan rute dari createPost. Dan maka ini akan memiliki metode pos. Dalam sini, kita akan memiliki dua bidang. Div class = "bentuk-kelompok". Kami menggunakan perpustakaan Bootstrap CSS anggun disediakan oleh Twitter. Jadi kita akan membuat dua ini. Jadi masukan pertama ini adalah akan menjadi judul. Nama sehingga input = "judul". Class = "formcontrol". Type = "text". Aku akan menambahkan placeholder = "Judul". Dan kemudian yang kedua adalah akan menjadi area teks. Nama = "content". Class = "formcontrol". Dan placeholder = "Tulis di sini". Di sana kami pergi. Akhirnya, kita akan menambahkan tombol kirim cepat. Type = "submit" class = "btn btn-utama". Jadi ini semua fitur Bootstrap jadi bahwa ini bisa diletakkan dalam cara yang mangsa pengguna, bukan HTML telanjang. Jadi kita telah mendefinisikan controller di sini. Kami telah menetapkan pandangan yang sangat sederhana. Tapi apa yang hilang adalah jaringan ikat. Jadi pada titik ini, Laravel tidak tahu bagaimana kita akan benar-benar mengakses kontroler ini. Jadi ini didefinisikan dalam file bernama routes.php. Dan sekarang, kita memiliki satu rute. Yang adalah ketika kita pergi ke jalan rumah untuk website ini, itu akan membuat controller indeks. Jadi di sini apa yang perlu kita lakukan adalah menerapkan rute baru bagi kita untuk membuat posting. Jadi kita menggunakan metode ini mendapatkan, yang menentukan bahwa ketika pengguna mencoba untuk mendapatkan ini page-- khusus pos slash page-- baru apa yang kita akan lakukan adalah menggunakan kontroler yang disebut Pos baru BlogController. Salah satu yang baru saja kita buat. Dan kemudian kita akan untuk alias sebagai NewPost. Kita akan membuat yang lain fungsi dalam sedikit. Tapi apa di sini di bawah kunci "sebagai" yang kita bisa mengganti dalam Pisau kami template. Jadi untuk saat ini, mari kita sebenarnya juga mengatakan rute. Jadi kita juga akan untuk membuat controller sehingga kita dapat membuat posting ini. Jadi, jika pengguna posting ke pos halaman slash baru, apa yang akan kita lakukan adalah menggunakan kontroler yang kita akan membuat lama disebut BlogController di createPost. Dan kita akan alias ini dengan sebagai createPost. Keren. Ada pertanyaan? Keren. Jadi mari kita jalankan apa yang kita miliki sejauh ini. Jadi jika kita melakukan php tukang melayani, kita akan melihat banyak kesalahan. Jadi sepertinya kita memiliki kesalahan sintaks pada rute baris 27. Ah. Hilang titik koma. Jadi, jika kita pergi ke 8.000, Anda akan melihat apa-apa di sini belum. Jadi ini adalah home page default. Tetapi jika kita pergi ke posting memangkas baru, hey. Ini akan menjadi bentuk yang baru saja kita buat. Sekarang, kami belum diimplementasikan fungsi ketika kita menekan tombol Submit. Jadi jika kita klik Submit tombol, ia akan menjalankan kesalahan. Tapi kami akan kode yang sekarang, tepatnya apa yang kita ingin lakukan ketika pengguna menyerahkan formulir ini. Jadi mari kita lakukan itu. Kembali ke Controller berkas. Apa yang akan kita lakukan adalah menerapkan fungsi baru ini yang memungkinkan kita untuk membuat posting. Menyatakan fungsi baru. Fungsi createPost publik. Dan fungsi ini akan menjadi sedikit lebih canggih dari apa kita miliki sebelumnya. Tapi Anda akan melihat di sini bahwa kita tidak akan benar-benar menulis SQL apapun. ORM, yang Fasih ORM, akan memungkinkan kita untuk melakukan hal ini dalam beberapa cara cara yang lebih elegan. Jadi kita akan membuat posting baru. Dan di sini kita instantiating objek baru dari model yang baru saja kita dibuat, model pos. Dan apa yang kita akan lakukan adalah mengatur Judul atribut ini menggunakan sesuatu yang kita dapatkan dari server. Jadi ini mirip dengan apa yang kita sebelumnya di CS50 Keuangan di mana kita akan lakukan, dengan menggunakan Super Global Posting mencari judul. Jadi Laravel menyediakan beberapa sanitasi dan yang lainnya menggunakan fungsi pembantu ini. Jadi kita lebih memilih untuk menggunakan ini sebagai gantinya dari bentuk mentah sangat mendasar ini dari PHP. Dan kemudian apa yang kita akan lakukan adalah mengatur isi ke Masukan mendapatkan konten. Kami benar-benar akan membungkus ini dalam fungsi membantu PHP yang menyediakan disebut nl2br, yang ternyata baru baris, nls, ke brs, istirahat, sehingga kita benar-benar dapat memiliki paragraf yang berbeda di dalamnya. Dan akhirnya apa yang kita akan lakukan adalah menyimpan posting ini. Jadi kita sebut fungsi menghemat model ini. Kita akan menyimpan pos. Dan akhirnya apa yang akan kita lakukan adalah mengarahkan pengguna khusus dengan rute yang kita akan membuat lama, alias oleh viewPost. Dan kita akan lulus dalam argumen id, menjadi id dari posting baru ini. Hebat Sekali. Jadi jika kita benar-benar pergi dan menjalankan ini. Kita akan menambahkan posting baru. Mari kita mengatakan ini adalah seminar 50. Dan katakanlah, yakin. Asdl. Bodo Amat. Beberapa jenis konten. Dan Submit itu. Dan kita akan melihat bahwa, hey. rute tidak didefinisikan. Tetapi jika kita melihat pada phpMyAdmin dan mencari apakah fungsi kita melakukan apa-apa. Lihatlah Blog50 posting. Kita akan melihat bahwa, hei. Bahkan, kita hanya membuat blog yang posting dengan cap waktu yang ditentukan. Jadi sekarang mari kita kembali dan benar-benar membuat fungsi ini di controller kita, khusus controller viewPost. ViewPost fungsi sehingga masyarakat. Jadi di sini yang akan kita lakukan, bukan memiliki tanda kurung kosong, kita akan ingin lulus dalam ID posting yang kita buat. Dan dari sini apa yang akan kita lakukan sebenarnya query database untuk itu. Jadi jika kita posting, ada fungsi yang disebut Cari yang memungkinkan kita untuk query dengan ID. Secara khusus, sebenarnya, kita akan menggunakan versi alternatif ini disebut Cari atau Gagal, yang memungkinkan kita untuk berhenti dari fungsi ini, melemparkan pengecualian jika ID kita lulus dalam tidak ada. Dan kemudian kita akan melakukan sesuatu mirip dengan apa yang kita lakukan sebelumnya di mana kita mengatur konten halaman ini menjadi versi diberikan pandang baru ini yang kita akan membuat, blog.view. Dan kita akan masuk ke dalam itu-- hanya seperti di CS50 render function-- kamus variabel. Kunci dari array asosiatif ini menjadi variabel dalam template. Jadi kita akan melakukan posting posting. Jadi secara tidak langsung lewat pos yang kita sudah tanya dari database. . Sekarang apa yang kita akan lakukan adalah membuat tampilan ini sehingga kita benar-benar dapat melihat posting blog yang telah kami bangun. Jadi kita akan membuat file bernama view.blade.php. Jadi dalam template ini, apa yang kita akan lakukan disatukan halaman sederhana yang memungkinkan kita untuk menampilkan konten. Jadi kita melakukan bagian, itu sebelum konten. Berhenti. Dan apa yang kita akan yang harus dilakukan dalam sini menulis beberapa HTML untuk menampilkan halaman ini. Jadi kita akan membungkusnya dengan mewah elemen HTML5 baru yang disebut Pasal. Dan di sini, kita akan memiliki header di mana kita akan hanya memiliki h1, yang meliputi judul posting. Jadi di sini, jika kita melihat ini notasi penjepit keriting ganda, ini akan melakukan dasarnya PHP gema judul posting. Jadi itu adalah singkatan bermanfaat bahwa Laravel memberikan kita. Jadi kita akan menggunakan notasi ini sebagai gantinya. Dan di sini, kita akan juga mencetak isi dari itu. Dan di sini, kita akan untuk melakukan isi posting. Dan turun di bawah apa yang kita akan lakukan adalah membuat footer. Dan di footer, kita akan tampilan pertama ketika ini diposting. Jadi ini telah diposting di, dibuat di. Dan Laravel menggunakan benar-benar baik tanggal perpustakaan yang disebut Carbon. Jadi kita benar-benar bisa melakukan sesuatu yang disebut difforHumans, yang Anda lihat sebelumnya. Ketika kita diposting. itu akan mengatakan, seperti, lima detik lalu. Jadi ini adalah benar-benar baik fungsi Laravel. Dan akhirnya, kita akan untuk menutup footer ini. Jadi sekarang jika kita kembali ke Halaman kita akan untuk melihat apa-apa di sini belum karena kami belum dikodekan sampai halaman rumah. Tetapi jika kita pergi ke posting slash satu, kita akan melihat pengecualian. Apakah ada yang tahu mengapa kita melihat pengecualian? Apa yang kita hilang? Ada gagasan? Jadi apa yang kita lakukan sebelumnya untuk kita benar-benar untuk menentukan bagaimana kita bisa kontroler tertentu? SPEAKER 1: Rute? ERIC Ouyang: Ya. Jadi kita masih harus menentukan rute. Jadi kita kembali ke sini untuk routes.php. Anda akan melihat kami yang belum benar-benar didefinisikan bagaimana kita akan mendapatkan ke controller ini. Jadi sekarang kita akan menentukan rute ini. Ini cukup mudah, mirip dengan apa yang kita lakukan sebelumnya. Tapi apa yang akan kita perhatikan di sini adalah bahwa kita akan memiliki placeholder. Jadi jika kita melakukan route.get pasca slash ID. Jadi ID sekarang adalah apa yang akan diteruskan ke controller. Ini akan menggunakan controller yang kita hanya dibuat, BlogController di viewPost. Dan kita akan alias ini sebagai viewPost. Hebat Sekali. Jadi sekarang kita akan membuat rute ini. Jadi jika kita pergi ke sini dan refresh halaman ini, kita sebenarnya memang harus posting blog baru. Jadi ini adalah apa yang kita buat sebelumnya. Sangat halaman sederhana, namun akan menampilkan posting blog yang baru saja kita buat. Keren. Dan jika kita benar-benar pergi melalui seluruh proses membuat posting blog baru, kita akan melihat bahwa segala sesuatu pengalihan benar. Jika saya mengatakan, "Hi. Saya Jonathan Tan. " Katakanlah, "Ini adalah posting blog saya." Dan Kirim itu, hal ini akan menciptakan ini posting blog baru dengan ID 2, yang bertahap dari apa yang kita punya sebelumnya dan menampilkannya dengan benar. Mengagumkan. Ada pertanyaan? Iya Nih? SPEAKER 2: Apakah Laravel menangani sanitasi dan semuanya untuk Anda? ERIC Ouyang: Ya. Jadi ketika kita melihat sebelumnya ketika kami masukan usus usus bisa, yang sanitates SQL setiap suntikan dan yang lainnya bahwa kita mungkin ingin melakukan jika kami pengguna berbahaya dari situs web. Jadi Laravel menangani banyak itu di belakang layar. Pertanyaan yang bagus. Jadi mari kita lihat di halaman rumah. Jadi, jika kita pertama kali kembali ke controller untuk halaman rumah, Anda akan melihat bahwa itu tidak berbuat banyak di sini. Anda akan melihat bahwa kita tidak melewati ke controller ini sesuatu yang sangat membantu. Hanya saja file indeks ini. Jadi mari kita masuk ke sesuatu ini bermanfaat. Dan secara khusus, kami akan lulus dalam posting. Dan Laravel memungkinkan kita untuk melakukan posting semua, yang akan memungkinkan kita untuk mendapatkan semua posting. Sekarang jika kita kembali ke index.php, Anda akan melihat, hey. Tidak ada di sini belum. Tapi apa yang kita ingin lakukan di sini sebenarnya iterate melalui, melakukan loop foreach atas posting yang memungkinkan kita untuk mencetak tulisan. Posting begitu foreach sebagai posting, apa yang ingin kita lakukan adalah mencetak konten dari posting blog. Tapi satu hal yang akan Anda perhatikan adalah bahwa kita benar-benar menulis sebagian besar kode yang sudah, di view.blade.php. Jadi apa yang akan kita benar-benar lakukan adalah menggunakan fitur bermanfaat yang bagus Blade dan faktor luar kode umum ini. Jadi kita pergi ke sini. Kita akan mengambil konten ini di sini, dan apa yang akan kita lakukan adalah membuat folder baru. Mari kita sebut saja parsial. Dan di sini, kita akan untuk membuat post.blade.php a. Jadi di sini, kami keluar faktor jalan di yang kita ingin menampilkan posting ini. Dan di sini yang akan kita lakukan bukan benar-benar memiliki HTML yang langsung, kita akan menggunakan direktif ini disebut termasuk blog.partials.post. Dan apa yang akan kita lakukan di sini adalah lulus dalam posting halaman. Jadi sekarang jika kita kembali ke sini, kita akan melihat bahwa fungsi ini masih sama. Tapi sekarang kita punya ini faktor luar kode, HTML ini. Jadi kita bisa menggunakannya di Index. Jadi di sini, ini sangat mudah. Semua yang kita lakukan adalah termasuk blog.partials.post dan berbagai. Dan tempat untuk sebelumnya, kami melakukan posting posting. Jadi sekarang jika kita kembali ke halaman rumah, kita akan melihat bahwa, hei. Kami memiliki daftar semua posting blog yang kita miliki sebelumnya. Kita mungkin ingin menambahkan beberapa "jika" kondisi dan "lain" kondisi sehingga jika kita tidak memiliki apapun di blog, kita ingin menampilkan sesuatu yang bermanfaat. Seperti, hey. Tidak ada konten belum di blog. Dan jika kalian benar-benar melihat kode distribusi pada GitHub, Anda akan melihat sebuah contoh bagaimana kita melakukannya. Keren. Ada pertanyaan? Iya Nih. SPEAKER 2: Saya kira hanya pertanyaan mendasar. Kembali pada rute. ERIC Ouyang: Ya. Jika kita melihat pada rute. SPEAKER 2: Mana yang uses.blogcontroller di buat pos, apa yang mengarahkan kita untuk? ERIC Ouyang: Ya. Ya. SPEAKER 2: Atau apa yang itu-- ERIC Ouyang: Jadi, kita lihat, katakan misalnya, dengan ini di sini. Bagian pertama adalah aktual URL bahwa pengguna akan pergi ke. Dan array ini di sini, array asosiatif, mendefinisikan bagaimana kita ingin memiliki Aplikasi tindakan dalam menanggapi hal itu. Jadi gunakan adalah controller, fungsi yang kita ingin menelepon ketika pengguna pergi ke URL ini. Jadi viewPost di sini adalah fungsi yang kita definisikan dalam dari BlogController-- SPEAKER 2: Saya melihat. ERIC Ouyang: --so kita bahwa benar-benar dapat membuat tampilan, melakukan beberapa perhitungan, berinteraksi dengan database SQL. SPEAKER 2: OK. ERIC Ouyang: Dan kemudian yang lain bagian, "sebagai" adalah alias yang kita gunakan. Jadi jika kita melihat ketika kami menciptakan bentuk, Anda akan melihat URL yang :: routecreatePost. Jadi pengganti di aktual URL sehingga kita tidak sulit coding ini sehingga kami bisa mengubahnya sekali, mengatakan jika kita ingin mengubah nama. Alih-alih pos slash baru, kami ingin lakukan seperti, p memangkas baru hanya untuk membersihkan up URL kita sedikit. Kami akan mengubahnya di satu tempat yang agak daripada di semua file yang berbeda. Keren. Itu bagus. Jadi sekarang kita memiliki sangat Platform blog dasar. Kita mungkin ingin menambahkan tombol sehingga bahwa kita benar-benar dapat membuat posting baru. Jadi, jika kita melihat di Layout Guru, kami memiliki bagian yang disebut header Kanan bahwa kita baru saja ditetapkan di atas. Jadi kita bisa menambahkan tombol untuk bagian atas header. Jadi jika kita pergi ke index.blade.php, sebenarnya lakukan adalah menentukan apa yang terjadi di dalam sini. Jadi bagian Header Kanan ini, apa yang kita akan lakukan adalah menambahkan tombol untuk pergi ke URL yang didefinisikan oleh rute pos baru. Hanya untuk membersihkannya dan membuat itu cantik dan semua Bootstrap, kita akan membuat ini tombol default. Mari kita membuatnya besar untuk bersenang-senang. Dan di dalamnya, kita bisa menempatkan beberapa teks. Tapi apa Bootstrap memberikan adalah glyphicons. Jadi kita benar-benar dapat menambahkan bahwa pensil bagus yang kita lihat sebelumnya. Glyphicon. Glyphicon-pensil. Jadi ini akan memungkinkan kita untuk menempatkan di ikon bukan teks. Sekarang jika kita berhenti, ini akan menentukan bagian ini. Dan, hey. Kami memiliki tombol yang bagus yang menghubungkan kita langsung ke menambahkan halaman posting blog. Jadi kita memiliki blog yang cukup sederhana. Kita bisa menambahkan hal itu. Tapi apa yang biasanya kita harapkan dari blog yang berkomentar. Jadi itu benar-benar penting bagi kita untuk memiliki, mengatakan, jika orang lain mengunjungi website dan benar-benar menyukai posting yang mereka dapat terlibat dalam diskusi dengan orang lain yang mengunjungi halaman. Jadi kita akan pergi dan membuat tabel database baru dan model baru sehingga kita dapat mengaitkan komentar dengan posting. Jadi langkah pertama, sama seperti sebelumnya, adalah bahwa kita perlu menjalankan migrasi. Jadi seperti sebelumnya, kita lakukan php tukang bermigrasi: membuat. Dan kita akan membuat satu disebut create_comments_table. Hal ini akan membuat file yang memiliki migrasi baru. Dan kita akan, seperti sebelumnya, mendefinisikan tabel baru. Jadi Skema :: membuat tabel bernama komentar. Fungsi ini di sini. Dan di dalam tabel ini apa kita akan lakukan adalah pertama, seperti sebelumnya, menetapkan ID. Increment ID. Kita akan memungkinkan pengguna untuk menghubungkan nama mereka dengan komentar tertentu. Kita akan memiliki beberapa konten yang sejalan dengan ini, isi teks. Dan di sini apa yang kita akan lakukan adalah sesuatu yang berbeda. Kita akan membuat integer yang disebut post_id yang akan menandakan apa posting komentar tertentu berjalan dengan. Selain itu, kami benar-benar akan menetapkan batasan kunci asing ini. Jadi MySQL akan menegakkan itu. Kami tidak mencoba untuk menetapkan nomor komentar 5 untuk mengirim 5.000 jika kita belum memiliki 5.000 posting di atasnya. Jadi apa yang kita lakukan di sini, kita lakukan post_id asing akan berhubungan dengan bidang ID dari posting meja. Dan kita benar-benar akan melakukan sesuatu lain membantu, adalah onDelete. Jadi jika kita menghapus beberapa posting dari database, bahwa kita ingin kaskade menghapus komentar juga. Karena itu tidak sangat membantu bagi kita untuk memiliki komentar pada posting yang tidak ada. Dan akhirnya, seperti sebelumnya, kami akan mengatur perangko waktu untuk hal ini. Dan seperti sebelumnya, kita akan memiliki migrasi sebaliknya menjadi menjatuhkan tabel komentar. Jadi sekarang jika kita kembali di sini, kita akan untuk menjalankan migrasi ini, tukang bermigrasi. Dan sekarang itu diterapkan ini migrasi yang baru saja kita buat. Jadi jika kita melihat phpMyAdmin, kita lakukan, pada kenyataannya, sekarang memiliki tabel komentar yang memiliki Struktur yang baru saja kita ditentukan. Jadi seperti sebelumnya, kami akan menciptakan model baru abstrak tabel SQL yang baru saja kita buat. Jadi mari kita Tambah file baru. Kita akan menyebutnya comment.php. Dan ini benar-benar akan menjadi cukup langsung dengan sedikit perubahan dari apa yang kita miliki sebelumnya. Jadi kelas Komentar meluas Fasih. Dan apa yang kita akan lakukan di sini adalah mendefinisikan fungsi yang merupakan hubungan dengan model lainnya. Jadi kita akan memiliki fungsi pos di sini yang mengembalikan hubungan ini. Jadi kita menentukan bahwa ini milik posting, mengatakan bahwa ada satu posting bahwa komentar ini milik. Ini benar-benar harus P modal untuk model. Dan sekarang hanya pada flip lain sisi, kita harus mengatakan bahwa, hei. Posting memiliki komentar. Jadi apa yang akan kita lakukan adalah mendefinisikan fungsi komentar publik. Dan di sini dikembalikan ini memiliki banyak Komentar. Jadi sekarang ajaib ketika kita memiliki posting, kita bisa mendapatkan komentar atribut dan itu akan mengisinya dengan informasi dari database. Jadi mari kita benar-benar pergi melalui dan menambahkan fitur baru ke file pandangan kami sehingga kita bisa baik tampilan dan menciptakan komentar. Jadi kita akan menentukan bagian baru. Mari kita memisahkan dengan aturan horisontal. Bagian id = "komentar". Apa yang akan kita lakukan di sini adalah, seperti sebelumnya, iterate melalui semua komentar. Jadi sebenarnya bagaimana kita melakukan ini adalah, seperti yang saya sebutkan, cukup ajaib. Kami melakukan posting komentar. Dan kemudian kita dapat melakukan ini untuk masing-masing loop atas setiap komentar. Dan apa yang kita akan lakukan adalah div class komentar, dan kita akan benar-benar mencetak komentar ini. Jadi menampilkan bahwa hei, komentar name-- orang yang diposting comment-- ini mengatakan dot dot dot. Kita akan menempatkan ini dalam blok kutipan, hanya untuk membuatnya terlihat bagus. Dan kemudian komentar blok kutipan isi. Dan foreach. Jadi sekarang ini akan lingkaran melalui semua komentar yang dikaitkan dengan masing-masing posting dan menampilkan masing-masing komentar. Aku akan menambahkan bagian lain di di sini, yang memungkinkan kita untuk menambahkan komentar. Kelas sehingga h3. Masukan judul di sini. Menambahkan komentar. Dan kita akan menentukan bentuk baru. Jadi seperti sebelumnya, kami akan melakukan bentuk tindakan. Dan di sini, tindakan baru kami akan menentukan controller baru yang memungkinkan kita untuk menanggapi posting permintaan untuk membuat komentar. Jadi URL :: rute createComment. Aku akan lulus dalam parameter di sini. ID pos yang kita menciptakan komentar pada. Dan kemudian metode ini Bentuk akan menjadi posting. Sekarang kita akan menambahkan dua bidang, kelompok bentuk. Ini akan menjadi masukan dengan nama "nama" dan class = "bentuk-control", ketik = "text", dan dengan placeholder = "Nama Anda." Kami juga akan mendefinisikan bidang bentuk lain, yang akan menjadi teks Daerah seperti yang kita miliki sebelumnya. Sama seperti sebelumnya, sebut saja konten. Class = "bentuk kontrol." Placeholder = "Tulis di sini." Dan hanya agar kita benar-benar dapat mengirimkannya, mengirimkan jenis dan class = "btn btn-primer." Menutup form. Tutup tindakan ini. Jadi sekarang jika kita me-refresh halaman ini di mana kita memiliki, katakanlah, sebuah pos tertentu. Kita harus reboot server. PHP tukang melayani. Reboot ini. Kita harus mendefinisikan rute. Tapi untuk saat ini, mari kita mengambil ini keluar sehingga kita dapat benar-benar menunjukkan apa halaman tampak seperti, dan kemudian kita benar-benar akan membuat rute itu. Jadi, hey. Kami memiliki bentuk baru di sini sehingga kita dapat membuat komentar. Jadi mari kita benar-benar mendefinisikan fungsi dalam controller sehingga kita bisa menambahkan komentar. Mari kita kembali. Dan dalam blogcontroller.php, apa yang kita akan lakukan adalah membuat fungsi baru disebut membuat komentar. Fungsi createComment publik. Ini akan memiliki satu parameter, ID posting bahwa kita mengomentari. Dan seperti sebelumnya, kami akan terlebih dahulu mendapatkan posting. Jadi posting, findOrfail id. Setelah itu, kita akan untuk membuat komentar baru. Jadi komentar = Komentar baru. Komentar name = Masukan :: mendapatkan nama. Konten komentar = baris baru yang sama dalam istirahat Input :: mendapatkan konten. Dan akhirnya, kita akan harus mengasosiasikan komentar ini dengan pos. Jadi kita akan menggunakan fungsi ini, komentar, yang memungkinkan kita untuk menyimpan hubungan ini. Jadi sekarang komentar ini akan memiliki otomatis pos ID. Kita juga bisa mengaturnya manual, tapi ini adalah lebih mudah dibaca sejauh sebagai fungsi berjalan. Dan setelah kami melakukan ini, apa yang ingin kita lakukan adalah mengarahkan pengguna ke rute yang ditentukan oleh viewPost dengan array dengan parameter pos ID. Dan sekarang sehingga sebenarnya ini fungsi, kita perlu mendefinisikan rute ini. Rute :: pos. Dan sekarang kita akan menyebutnya posting memangkas ID slash komentar. Array menggunakan fungsi baru yang baru saja kita buat. BlogController. CreateComment sebagai createComment. Hebat Sekali. Jadi sekarang mudah-mudahan jika kita me-refresh halaman ini dan menambahkan komentar, katakanlah, David Malan. "Mudah-mudahan ini bekerja." Kirim. Kami, pada kenyataannya, memiliki komentar di posting blog ini. Keren. Jadi sekarang kita memiliki cukup posting blog fungsional. Kami hanya akan menambahkan beberapa tweak jadi bahwa kita memiliki beberapa lebih berguna Informasi pada posting tersebut. Jadi, jika kita kembali ke halaman depan, kita tidak memiliki rasa berapa banyak komentar yang pada masing-masing posting ini. Jadi apa yang kita benar-benar akan lakukan adalah, di dalam model kami, mendefinisikan fungsi pembantu yang memungkinkan kita untuk menentukan jumlah komentar yang pergi dengan posting tertentu. Jadi kita akan membuat fungsi pembantu. Fungsi publik. GetNumCommentsStr. Jadi string yang menentukan jumlah komentar yang pergi bersama dengan itu. Dan apa yang kita akan lakukan adalah mengatakan num itu = komentar ini menghitung. Jadi kita akan menghitung jumlah komentar. Dan jika nomor ini sama dengan 1, kami hanya akan kembali 1 komentar. Dan kemudian jika tidak, kami ingin kembali gabungan dari num dan komentar, sehingga kita mendapatkan pluralisasi yang benar. Hanya membuat satu kutipan. Satu komentar. Dan sekarang kita dapat menggunakan fungsi ini langsung dalam pandangan kami. Jadi, jika kita kembali ke posting parsial yang kita buat, sekarang kita ingin benar-benar menampilkan jumlah komentar. Jadi apa yang bisa kita lakukan adalah posting, gunakan fungsi ini bahwa kita hanya diciptakan untuk menampilkan jumlah komentar. Jadi jika sekarang kita menyegarkan, itu tidak, pada kenyataannya, tampilan komentar nomor yang pergi bersama dengan itu. Jika kita ingin menjadi mewah jika Anda benar-benar melihat kode distribusi, kita benar-benar dapat menghubungkan ini untuk komentar. Jika Anda ingat, kita mendefinisikan dalam melihat bahwa ini bagian ID komentar. Jadi jika kita benar-benar ingin untuk menghubungkan langsung ke bagian komentar, apa kita akan lakukan di sini adalah href URL viewPost rute. Lulus dalam array ID pasca ID. Dan kemudian kita ingin pergi ke khususnya bagian komentar. Berikut mari kita menutup tag A. Jadi sekarang jika kita menyegarkan ini Halaman, kita klik ini. Kita akan pergi langsung ke bagian komentar. Jika kita memiliki posting lagi, Anda bisa benar-benar melihat bounce ini turun. Tapi Anda akan melihat bahwa itu tidak di bagian atas halaman. Keren. Hebat Sekali. Jadi itu cukup mudah contoh dari sesuatu yang sederhana yang dapat Anda lakukan dengan Laravel. Tapi Anda bisa melihat di sini bahwa kami telah melakukan banyak hal dengan jumlah yang cukup sedikit kode. Laravel memungkinkan kita untuk melakukan Query SQL di belakang layar. Itu tidak sanitasi bagi kita di belakang layar. Memungkinkan kita untuk melakukan hubungan ini sangat mudah tanpa kita perlu untuk melakukan SQL pernyataan untuk bergabung menggabungkan komentar dengan apa tulisan. Memungkinkan kita untuk melakukan hal ini warisan template sehingga kita dapat menentukan bersarang ini file sehingga kita tidak mengulangi diri kita sendiri, seperti ketika kita punya yang Tampilan posting blog bahwa kita tidak perlu copy dan paste kode. Dan dari sini Anda dapat membangun aplikasi semakin rumit. Anda bisa bayangkan jika kita ingin menerapkan log-in, kita bisa mengatakan, membawa pihak ketiga kerangka kerja yang memungkinkan kita untuk melakukan itu. Ada banyak dari mereka yang benar-benar, benar-benar besar yang bisa melakukan seperti, pemulihan password. Dan itu akan mengirimkan ulang email password. Kita bisa menerapkan izin sehingga saya bisa membuat sebuah tulisan, tapi orang lain tidak dapat mengeditnya. Kita bisa menerapkan fungsi untuk menghapus posting. Tapi Anda bisa lihat di sini bahwa kita memiliki cukup banyak semua komponen dasar untuk membangun beberapa benar-benar, benar-benar, aplikasi web dinamis dan menarik. Maka dengan itu, saya pikir kita baik. Apakah kalian memiliki pertanyaan? Iya Nih? SPEAKER 3: Bagaimana Anda mendapatkan konten statis? ERIC Ouyang: konten statis. Jadi Anda melihat sebelumnya bahwa ketika kita memiliki hak ini di sini, isi tata letak ini, Tampilan make, kami punya ini tanpa array ini kemudian. Blog.index, kami punya ini hanya sebagai file statis. Jadi jika kita tidak lulus apapun bersama untuk itu, itu hanya akan membuat HTML langsung. Tetapi jika kita lulus dalam asosiatif ini array posting, yang dinamis ditarik dari database, kita dapat membuat halaman dinamis. Keren. Ada pertanyaan lain? SPEAKER 3: Bagaimana Anda membandingkan Laravel untuk mungkin beberapa pilihan lain? ERIC Ouyang: Tentu. Ya. Jadi Laravel is-- itu a question-- besar salah satu dari banyak pilihan untuk kerangka web. Jadi Ruby on Rails adalah salah satu yang populer. Saya percaya Twitter dulu diimplementasikan dengan Ruby on Rails. Saya pikir mereka sudah sejak beralih. Ada satu lagi yang disebut FuelPHP. Jadi Ruby on Rails menggunakan bahasa Ruby dan menerapkan banyak hal MVC yang kita lihat di sini. FuelPHP adalah framework PHP lain. Django adalah salah satu favorit saya. Ini adalah kerangka web untuk Python. Jadi, Anda dapat menulis aplikasi web Anda di Python. Jadi ada satu ton pilihan ini. Laravel, saya pikir, oleh dan besar benar favorit saya sekarang ke PHP hanya karena komponen yang kita bicarakan sebelumnya. Itu Komposer diaktifkan. Ini termasuk benar-benar, benar-benar Sistem ORM ekspresif. Juga memiliki template benar-benar mengagumkan bahasa yang beberapa yang lain hanya tidak memberikan. Dan migrasi. Migrasi mengagumkan juga. Keren? Mengagumkan. Nah, terima kasih banyak untuk menonton seminar ini, dan semoga sukses pada proyek akhir Anda.