[Muzik bermain] ERIC Ouyang: Hey, semua orang. Selamat datang. Ini adalah Bangunan Dinamik Web Apl dengan Laravel. Nama saya Eric Ouyang. Saya seorang mahasiswa tingkat kedua mengkaji kajian sosial dengan menengah dalam bidang sains komputer, dan saya tinggal di Adams Rumah di sini di Harvard. Jadi Laravel, di teras yang paling, adalah satu rangka kerja aplikasi web MVC. Jadi apa yang anda suka lelaki itu mempunyai telah lakukan dengan CS50 Kewangan, Laravel adalah rangka kerja yang membolehkan anda untuk membina aplikasi web yang dinamik. Jadi, anda boleh memikirkan ia dalam beberapa deria sebagai lanjutan kepada jenis barangan anda telah melakukan dalam CS50 Kewangan, tetapi sistem itu banyak yang lebih mantap, banyak lebih elegan di beberapa deria, dan menyediakan banyak fungsi untuk anda untuk membina agak kompleks aplikasi web. Jadi mari kita pergi melalui beberapa ciri-ciri utama, dan kemudian kami akan menyelam ke dalam contoh membina blog permohonan dengan Laravel. Jadi salah satu perkara pertama yang membezakannya daripada jenis MVC kerja bahawa anda telah melakukan dengan CS50 adalah ia termasuk enjin PRO. Jadi PRO bermaksud objek pemetaan hubungan. Jadi ini membolehkan anda untuk membina lapisan abstraksi antara pangkalan data dan pengawal anda. Jadi tidak seperti di CS50 Kewangan di mana anda terus membuat pertanyaan, PRO lapisan yang membolehkan anda abstrak yang jauh dan mencipta model yang lebih berkuasa daripada anda boleh terus dengan pertanyaan SQL. Satu lagi perkara yang benar-benar membantu adalah template diwarisi. Jadi, anda akan melihat dalam CS50 Kewangan, anda berakhir menulis semula banyak perkara, di mana anda boleh meletakkan berpotensi menggunakan semula sesuatu, anda tidak mampu. Jadi di sini di Laravel, anda boleh menggunakan apa yang dikenali sebagai mesin template bilah untuk membuat susun atur induk. Dan dari sana, anda boleh mewarisi supaya sub-template boleh sebenarnya termasuk unsur-unsur dalam bahawa template asas yang lebih besar. Migrasi. Jadi ini adalah ciri-ciri yang agak standard pada moden rangka aplikasi web yang paling. Jadi ini membolehkan anda untuk mewakili perubahan skema pangkalan data dalam kod. Jadi tanpa akan mengatakan, phpMyAdmin, anda sebenarnya boleh membuat penghijrahan ini di mana anda mewakili pangkalan data skema perubahan dalam kod secara langsung. Dan ini membolehkan anda supaya- terutamanya jika anda mempunyai beberapa orang yang bekerja pada application-- web yang sama mengesan perubahan ini, katakan dalam GitHub, atau beberapa repositori lain. Jadi ini adalah benar-benar berguna dan mengurangkan keperluan untuk, katakan, menyebarkan banyak SQL tempat pembuangan sampah. Dan akhirnya, Komposer adalah sesuatu yang benar-benar, benar-benar berguna yang membolehkan anda untuk menggunakan lain kod rakyat untuk melakukan perkara-perkara yang menggerunkan. Jadi ini Laravel distrukturkan sebagai beberapa pakej komposer. Jadi mengatakan jika anda mahu membawa dalam pakej pengesahan atau jika anda mahu untuk membawa masuk beberapa semacam skrip penjana atau seorang admin antara muka, anda boleh plug and play komponen-komponen dengan Komposer. Jadi mari kita bermula. Sebarang soalan daripada anda orang sebelum kita bermula? Tiada soalan? Cool. Jadi langkah pertama adalah memasang Komposer. Jadi Komposer membolehkan anda menguruskan Kebergantungan ini, sama ada rangka kerja yang Laravel atau beberapa sambungan lain pihak ketiga. Arahan pertama membenarkan anda untuk memuat turun Komposer, dan perintah yang kedua membolehkan anda memindahkannya ke folder bin tempatan anda supaya anda boleh menjalankan Komposer secara langsung melalui terminal. Selepas itu, pergi ke depan dan membuat projek Laravel baru. Kami benar-benar pergi ke menggunakan beberapa contoh kod yang saya telah meletakkan bersama-sama untuk membuat blog ini. Tetapi jika anda bermula dari awal, anda akan menggunakan arahan ini di sini, komposer mencipta-projek, laravel mengurangkan laravel, dan kemudian nama projek anda. Dan yang akan termasuk semua kod pengagihan untuk memulakan projek Laravel baru. Jadi untuk projek akhir CS50 anda, anda akan mungkin mahu menggunakan arahan ini. Tetapi kita akan mulakan dengan ini. Jadi sebaik sahaja anda telah dilakukan bahawa, anda akan mendapatkan jumlah yang agak banyak fail dalam blog50. Jadi mari kita hanya mengikut sahaja beberapa komponen ini. Anda akan melihat di laluan ini direktori, terdapat folder app. Di dalam folder aplikasi, ada pasangan folder membantu. Nota untuk memulakan dengan adalah folder config ini. Jadi ini menetapkan sehingga bagaimana aplikasi web anda akan, berkata, mengesahkan orang atau perkara tunai atau menyambung kepada pangkalan data. Dan apa yang benar-benar membantu ialah Laravel membolehkan anda untuk menetapkan berbeza persekitaran pembangunan. Jadi apa yang telah kami lakukan di sini adalah jika kita pergi di bawah folder tempatan, ada fail database.php. Dan anda akan melihat di sini bahawa kita menubuhkan sambungan MySQL yang membolehkan individu untuk menyambung kepada pelayan MySQL itulah langsung perkakas CS50 itu. Dan kami menyambung kepada pangkalan data yang saya set dipanggil Blog50. Jadi mari kita sebenarnya pergi ke depan dan menjalankan versi kerja ini, hanya untuk mendapatkan rasa apa yang permohonan yang kami sedang membina kelihatan seperti. Jadi saya mempunyai salinan Blog50 ini selesai. Jadi sebenarnya Laravel telah dibina pada pelayan bahawa anda boleh menjalankan secara langsung daripada baris arahan. Jadi ini adalah sama dengan Serangga sebelum apabila anda benar-benar membina pelayan anda sendiri dalam C. Jadi mereka telah terbina dalam supaya bahawa anda boleh menjalankan aplikasi Laravel anda secara langsung daripada baris arahan. Jadi, jika kita melakukan php tukang berkhidmat, ini akan melancarkan pelayan pembangunan pada port 8000. Jadi, jika kita pergi ke tuan rumah tempatan 8000, anda akan perasan bahawa, hey. Kami mempunyai blog kami dan berjalan. Jadi di sini adalah Laravel menjana muka hadapan blog kami. Permohonan yang sangat mudah. Tetapi ada pasangan ciri benar-benar bagus bahawa ia menyediakan bawah hood. Jadi aplikasi blog ini terus-terang. Jika kita mahu buat pengumuman, kita boleh klik pada butang itu. Kita boleh berkata, "Hei, semua orang. Ini adalah benar-benar menyeronokkan seminar, "sebagai contoh. Dan menulis sesuatu ke sini. Teks di sini. Jika kita klik Submit, anda akan melihat bahawa blog baru kami jawatan telah ditambah kepada muka hadapan blog. Jika kita pergi ke sini, anda akan melihat bahawa terdapat beberapa komen telah di blog. Jadi, jika kita tatal ke bawah, anda akan melihat bahawa Jonathan Tan berkata bahawa beliau sangat tertarik dengan jawatan ini. Oleh itu, kita akan pergi ke bagaimana objek pemetaan hubungan membolehkan anda untuk melakukan hubungan-hubungan ini dalam cara yang agak lancar juga. Cool. Apa-apa soalan tentang fungsi apa yang kita akan membina? Cool. Jadi mari kita bermula dengan sebenarnya mewujudkan jadual pangkalan data. Jadi ingat bahawa dalam CS50 Kewangan, anda menyusun jadual untuk pengguna dan juga untuk saham dalam portfolio anda. Jadi seperti yang kita sebutkan sebelum ini, apa yang kita gunakan dalam Laravel adalah sesuatu yang dikenali sebagai migrasi. Jadi, jika kita kembali kepada kod pengedaran di sini, arahan pertama yang membantu yang Laravel menyediakan anda adalah perintah berhijrah ini. Oleh itu, kita boleh melakukan php tukang berhijrah: membuat. Jadi ini membolehkan kita untuk membuat penghijrahan. Dan kemudian kita akan mahu untuk mewujudkan satu penghijrahan dipanggil create_posts_table, yang akan sebagai mana kita akan menjadi menyimpan catatan blog kami. Dan anda akan melihat di sini bahawa ia berjalan melalui beberapa kod yang benar-benar menjana fail dengan suatu cap masa pada ia. Jadi, jika kita pergi dan melihat Pangkalan Data, kita akan melihat di bawah penghijrahan bahawa ia mewujudkan satu fail kosong untuk kita yang mempunyai kod boilerplate dengan nama yang kita dinyatakan, buat jadual catatan. Dan ia mempunyai dua fungsi di dalamnya. Up adalah apa yang kita mahu menjalankan apabila penghijrahan digunakan untuk pangkalan data. Dan ke bawah adalah apa yang kita akan lakukan apabila kita ingin berbalik penghijrahan. Jadi di sini kita bermula dengan menulis penghijrahan ini. Jadi ada kelas membantu dalam Laravel dipanggil Skema. Jadi, kita akan berjalan Skema :: buat. Dan kita akan mewujudkan jadual yang dipanggil jawatan. Dan di sini kita memohon ini menggunakan fungsi. Dan dalam sini, kita akan benar-benar menentukan kandungan meja kami. Kami akan mewujudkan satu ID, yang auto-menokok. Di samping itu, kita akan untuk mewujudkan bidang yang mewakili tajuk post blog kami. Kami juga akan mewujudkan bidang yang untuk menyimpan teks pos blog kami. Dan akhirnya, kita akan untuk menyimpan beberapa cap waktu apabila pos kami telah dicipta dan apabila ia telah dikemas kini. Dan untuk ke bawah, ia adalah agak mudah. Apa yang kami mahu lakukan adalah penurunan meja yang kami telah mencipta. Great. Apa-apa soalan? Oleh sebab itu jika kita pergi ke depan dan- sebenarnya, tuan rumah tempatan, biarlah saya memadam apa yang kita sebelum ini. Pergi ke Pangkalan data. Saya akan memadam apa yang kita sebelum ini. Drop ini dan mewujudkan pangkalan data baru Blog50. Jadi sekarang apa yang ajaib sebahagian adalah di sini bahawa kita boleh memohon migrasi ini secara terus kepada pangkalan data yang menggunakan baris arahan alat. Jadi, jika kita melakukan php tukang berhijrah, anda akan perasan bahawa, hey. Ia dicipta jadual perpindahan, yang kita akan lihat di dalam sedikit, dan ia digunakan penghijrahan pertama ini. Oleh itu, kita melihat Blog50, anda akan perasan bahawa ia menciptakan dua jadual untuk kita. Pertama adalah jadual migrasi ini. Oleh itu, jika kita lihat ini, anda akan melihat bahawa jadual ini adalah agak mudah. Ia hanya berkata, hey. Kami telah memohon penghijrahan ini. Kami pergi ke belakang dan melihat jawatan. Anda akan melihat bahawa struktur adalah apa yang kita telah meminta ia. Kami mempunyai ID automatik menokok. Kami mempunyai tali untuk menyimpan tajuk, dan medan teks untuk menyimpan kandungan. Great. Cool. Apa-apa soalan mengenai migrasi kerja, bagaimana kita boleh menggunakannya? Tidak? Cool. Jadi sekarang kita akan pergi ke depan dan mencipta model. Oleh itu, kita mahu mewujudkan model jawatan yang menyimpan satu abstraksi pangkalan data. Jadi, daripada melakukan MySQL pertanyaan secara langsung, kita akan buat. Oleh itu, kita perlu membuat folder di sini yang dikenali sebagai model. Dan di dalam sini, kita akan mencipta fail yang dipanggil post.php. Di dalam fail PHP ini, kita akan membuat jawatan kelas yang memanjangkan fasih. Fasih adalah nama PRO yang enjin yang Laravel menyediakan. Dan di sini, kita boleh menjangkakan bahawa anda benar-benar perlu untuk menulis beberapa kod. Kami akan menulis beberapa fungsi pembantu kemudian. Tetapi keluar dari kotak, ini akan sudah mengenali apa yang di dalam pangkalan data dan kita boleh mengakses, berkata, teks yang jawatan blog kami atau tajuk, dan mencipta barangan secara langsung dengan cukup banyak tiada kod jua. Jadi itulah salah satu komponen yang ajaib. Dan angin sekali kelas ini adalah yang beroperasi dengan lebih menyeluruh, kami akan termasuk maklumat mengenai apa yang ia berkaitan dengan, jadi komen. Juga mewujudkan fungsi jadi kita sebenarnya terus mendapatkan URL bagi sebuah laman blog post. Cool. Apa-apa soalan tentang itu? No. Cool. Oleh sebab itu apabila kita mempunyai model kita, kita ingin membuat pengawal itu dapat untuk berhubung dengan model-model ini, dan seterusnya pangkalan data. Oleh itu, jika kita lihat di BlogController, anda akan melihat bahawa tidak ada banyak di sini sekarang. Semua ada adalah fungsi indeks yang menjana halaman rumah, tetapi tanpa apa-apa ada untuk dipaparkan lagi. Jadi fungsi pertama bahawa kita akan mewujudkan adalah salah satu yang membolehkan kita untuk membuat siaran blog. Jadi, kita akan mengisytiharkan fungsi baru yang dipanggil newPost. Dan di dalam sini hanya, kita akan untuk menetapkan susun atur halaman ini menjadi menyebabkan versi, jika anda ingat dari CS50, template ini dipanggil blog.new, yang kita akan membuat dalam sedikit. Anda akan melihat di sini pada baris yang enam kita ditentukan pembolehubah ini, susun atur. Dan jika kita melihat dengan pada folder Views itu, terdapat folder Layouts, yang termasuk fail HTML yang sangat asas. Dan nota, anda akan perasan yang kita ada bekas di sini yang menghasilkan kandungan. Jadi di dalam template kami apa yang kita akan lakukan adalah mewujudkan apa yang akan menjadi digantikan secara langsung dalam susun atur ini. Oleh itu, kita berkata bahawa kita ingin menjadikan template yang dipanggil blog.new. Tetapi di dalam Blog, ada belum template baru ini. Jadi kita akan membuat fail dipanggil new.blade.php. Ini memberitahu bahawa Laravel file PHP ini perlu diterjemahkan dengan mesin template bilah. Jadi ini adalah agak fail mudah. Ia akan menjadi bentuk yang dengannya kita sebenarnya menambah dalam blog post. Jadi sihir di sini dari pusaka ialah, hey. Kami ingin nyatakan bahawa seksyen, seksyen kandungan di sini, yang ditandakan olehsection danstop. Jadi apa yang ada di antara di sini akan digantikan ke dalam susun atur induk. Dan di sini apa yang kami mahu lakukan adalah sangat hanya membuat fail HTML baru. Mari kita menambah tajuk yang cepat. Tambah blog post. Dan dalam tempoh itu, kami akan mewujudkan borang. Borang ini akan mempunyai suatu tindakan. Dan ini akan menjadi sesuatu yang bahawa kita menggantikan dalam kemudian, dan kita akan melihat bagaimana routing muat ke sini. Tetapi kita hanya akan menentukan untuk sekarang ini pergi ke URL yang dengan laluan dari createPost. Dan maka ini akan mempunyai kaedah pos. Dalam di sini, kita akan mempunyai dua bidang. Div class = "bentuk-kumpulan". Kami menggunakan perpustakaan Bootstrap CSS anggun disediakan oleh Twitter. Jadi, kita akan mewujudkan dua ini. Jadi input pertama ini adalah akan menjadi tajuk. Jadi nama input = "title". Class = "formcontrol". Type = "text". Saya akan menambah pemegang tempat = "Tajuk". Dan kemudian yang kedua adalah akan menjadi kawasan teks. Name = "kandungan". Class = "formcontrol". Dan pemegang tempat = "Tulis di sini". Di sana kami pergi. Akhir sekali, kita akan menambah butang cepat hantar. Type = "submit" class = "BTN btn-utama". Jadi semua ini adalah ciri-ciri Bootstrap jadi yang ini boleh dibentangkan keluar dengan cara itulah mangsa kepada pengguna, bukannya HTML telanjang. Oleh itu, kita telah ditakrifkan pengawal di sini. Kami telah ditakrifkan pandangan yang sangat mudah. Tetapi apa yang kurang ialah tisu penghubung. Jadi pada ketika ini, Laravel tidak mempunyai idea bagaimana kita akan benar-benar mengakses pengawal ini. Jadi ini ditakrifkan dalam fail routes.php dipanggil. Dan sekarang, kita mempunyai satu laluan. Iaitu apabila kita pergi ke jalan rumah untuk laman web ini, ia akan menyebabkan pengawal indeks. Jadi di sini apa yang kita perlu lakukan ialah melaksanakan laluan baru untuk kita buat pengumuman. Oleh itu, kita menggunakan kaedah ini mendapatkan, yang menyatakan bahawa apabila pengguna cuba mendapatkan ini page-- khusus jawatan mengurangkan page-- baru apa yang kita akan lakukan adalah menggunakan pengawal yang dipanggil Jawatan baru BlogController. Antara perkara yang kita buat. Dan kemudian kita akan kepada Alias ​​sebagai newPost. Kami akan mewujudkan satu lagi fungsi dalam sedikit. Tetapi apa yang di sini di bawah kunci "sebagai" adalah apa yang kita boleh menggantikan dalam template Blade kami. Jadi buat masa ini, mari kita sebenarnya juga kata laluan. Oleh itu, kita juga pergi untuk mewujudkan pengawal supaya kita boleh mewujudkan jawatan-jawatan ini. Jadi, jika seorang pengguna untuk jawatan jawatan halaman slash baru, apa yang kita akan lakukan adalah menggunakan pengawal yang kita akan mewujudkan lama dipanggil BlogController di createPost. Dan kita akan alias ini dengan sebagai createPost. Cool. Apa-apa soalan? Cool. Jadi mari kita menjalankan apa yang kita ada setakat ini. Jadi, jika kita melakukan php tukang berkhidmat, kita akan melihat banyak kesilapan. Jadi ia kelihatan seperti kita mempunyai ralat sintaks di laluan beratur 27. Ah. Hilang koma bertitik. Jadi, jika kita pergi ke 8,000, anda akan melihat apa-apa di sini lagi. Jadi ini adalah halaman utama lalai. Tetapi jika kita pergi ke pos slash baru, hey. Ia akan menjadi bentuk yang kita buat. Pada masa ini, kami tidak mempunyai melaksanakan fungsi yang bila kita tekan butang Submit. Jadi, jika kita klik pada Submit butang, ia akan berjalan ralat. Tetapi kita akan kod yang sekarang, dengan tepat apa yang kita mahu lakukan apabila pengguna mengemukakan borang ini. Jadi mari kita buat itu. Kembali ke fail Pengawal itu. Apa yang kita akan lakukan adalah melaksanakan fungsi baru ini yang membolehkan kita untuk buat pengumuman. Mengisytiharkan fungsi baru. CreatePost fungsi awam. Dan fungsi ini akan menjadi sedikit sedikit lebih canggih daripada apa yang kita mempunyai di hadapan. Tetapi anda akan melihat di sini bahawa kita tidak sebenarnya akan menulis apa-apa SQL. ORM, yang Eloquent PRO, akan membolehkan kita untuk melakukan ini dalam beberapa cara cara yang lebih elegan. Jadi kita akan membuat siaran baru. Dan di sini kita instantiating objek baru dari model yang kita hanya diwujudkan, model jawatan itu. Dan apa yang kita akan lakukan adalah menetapkan atribut tajuk ini menggunakan sesuatu yang kita dapat daripada pelayan. Jadi ini adalah sama dengan apa yang kami sebelum di CS50 Kewangan di mana kita akan lakukan, menggunakan Super Global Post mencari tajuk. Jadi Laravel menyediakan beberapa sanitasi dan barang kecil menggunakan fungsi pembantu ini. Oleh itu, kita lebih suka untuk menggunakan ini sebaliknya daripada bentuk mentah sangat asas ini dari PHP. Dan kemudian apa yang kita akan lakukan ialah menyediakan kandungan kepada Input mendapatkan kandungan. Kami benar-benar pergi untuk membalut ini dalam satu majlis yang berguna PHP menyediakan dipanggil nl2br, yang bertukar baru baris, NLS, ke BRS, memecahkan, supaya kita boleh mempunyai perenggan yang berbeza di dalamnya. Dan akhirnya apa yang kita akan lakukan adalah menyimpan catatan ini. Jadi kita panggil fungsi menjimatkan model ini. Kami akan menyelamatkan jawatan itu. Dan akhirnya apa yang kita akan lakukan yang mengarahkan pengguna khusus to yang kita akan mewujudkan lama, alias oleh viewPost. Dan kita akan lulus dalam hujah-hujah id, sebagai id jawatan baru ini. Great. Oleh sebab itu jika kita benar-benar pergi dan menjalankan ini. Kami akan menambah jawatan baru. Katakan ini adalah seminar 50. Dan katakanlah, pasti. ASDL. Apa sahaja. Beberapa jenis kandungan. Dan ia Hantar. Dan kita akan melihat bahawa, hey. laluan tidak ditakrifkan. Tetapi jika kita lihat di phpMyAdmin dan mencari sama ada atau tidak fungsi kami melakukan apa-apa. Lihatlah jawatan Blog50. Kami akan perasan bahawa, hey. Malah, kita tidak hanya membuat blog yang pos dengan cap waktu yang dinyatakan. Jadi sekarang mari kita kembali dan mencipta fungsi ini lain di dalam alat kawalan kami, khusus pengawal viewPost itu. ViewPost fungsi Jadi awam. Jadi di sini apa yang kita akan lakukan, dan bukan mempunyai kurungan kosong, kita akan mahu untuk lulus dalam ID jawatan yang kami mewujudkan. Dan dari sini apa yang kita akan lakukan sebenarnya pertanyaan pangkalan data untuk itu. Jadi, jika kita hantar, ada fungsi yang dipanggil Cari yang membolehkan kita untuk pertanyaan itu dengan ID. Secara khusus, sebenarnya, kita akan menggunakan versi silih ganti ini dipanggil Cari atau Gagal, yang membolehkan kita untuk berhenti daripada fungsi ini, membuang pengecualian jika ID kita lulus dalam tidak wujud. Dan kemudian kita akan melakukan sesuatu sama dengan apa yang kami lakukan sebelum ini di mana kita menetapkan kandungan halaman ini untuk menjadi versi diberikan pandangan baru ini yang kita akan buat, blog.view. Dan kita akan masuk ke dalam it-- hanya suka dalam CS50 yang menyebabkan function-- kamus pembolehubah. Kunci-kunci array bersekutu ini menjadi pembolehubah dalam template. Jadi, kita akan lakukan selepas pos. Jadi secara tidak langsung lulus jawatan yang kami telah membuat pertanyaan dari pangkalan data. . Sekarang apa yang kita akan lakukan adalah mewujudkan pandangan ini supaya kita benar-benar dapat melihat catatan blog yang kita telah dibina. Jadi kita akan membuat fail dipanggil view.blade.php. Jadi di dalam template ini, apa yang kita akan lakukan diletakkan bersama-sama halaman yang mudah yang membolehkan kita untuk memaparkan kandungan. Oleh itu, kita melakukan seksyen, itu sebelum kandungan. Berhenti. Dan apa yang kita akan lakukan dalam sini adalah menulis beberapa HTML untuk memaparkan halaman ini. Jadi kita akan balut dengan mewah yang elemen HTML5 baru yang dikenali sebagai Perkara. Dan di sini, kita akan mempunyai tandukan mana kita akan hanya mempunyai satu h1, yang merangkumi tajuk pos. Jadi di sini, jika kita melihat ini dua notasi pendakap kerinting, ini akan melakukan pada dasarnya PHP echo tajuk pos. Jadi ia adalah trengkas membantu yang Laravel kepada kita. Jadi, kita akan menggunakan tatatanda ini bukan. Dan di sini, kita akan juga mencetak kandungan itu. Dan di sini, kita akan berbuat kandungan pos. Dan ke bawah di bahagian bawah apa yang kami akan lakukan ialah membuat nota kaki. Dan dalam nota kaki, kita akan paparan pertama apabila ini telah diposkan. Jadi ini telah diposkan pada, diwujudkan pada. Dan Laravel menggunakan bagus perpustakaan tarikh dipanggil Carbon. Oleh itu, kita sebenarnya boleh melakukan sesuatu yang dinamakan difforHumans, yang anda lihat sebelum ini. Apabila kita diposkan. ia akan berkata, seperti, lima saat yang lalu. Jadi ini adalah benar-benar bagus fungsi Laravel. Dan akhirnya, kita akan untuk menutup kaki ini. Oleh sebab itu jika kita kembali kepada Laman Utama kita akan untuk melihat apa-apa di sini lagi kerana kami tidak dikodkan sehingga halaman rumah. Tetapi jika kita pergi ke pos slash satu, kita akan melihat pengecualian. Adakah sesiapa tahu mengapa kita lihat pengecualian? Apa yang kita hilang? Apa-apa idea? Jadi apa yang telah kami lakukan lebih awal untuk kita sebenarnya untuk menentukan bagaimana kita dapat pengawal tertentu? SPEAKER 1: Laluan ini? ERIC Ouyang: Yeah. Oleh itu, kita masih perlu menentukan laluan. Oleh itu, kita kembali di sini untuk routes.php. Anda akan melihat bahawa kita tidak sebenarnya ditakrifkan bagaimana kita akan mendapatkan kepada pengawal ini. Jadi sekarang kita akan menentukan laluan ini. Ia agak mudah, sama dengan apa yang kami lakukan sebelum ini. Tetapi apa yang kita akan melihat di sini adalah bahawa kita akan mempunyai pemegang tempat. Jadi, jika kita melakukan route.get pos palang ID. Jadi ID sekarang ialah apa yang akan diluluskan ke dalam pengawal. Ini akan menggunakan pengawal yang kita hanya diwujudkan, BlogController di viewPost. Dan kita akan alias ini sebagai viewPost. Great. Jadi sekarang kita akan buat laluan ini. Oleh sebab itu jika kita pergi sini dan muat semula halaman ini, kita sebenarnya mempunyai blog post baru kami. Jadi ini adalah apa yang kita dicipta lebih awal. Sangat halaman mudah, tetapi paparan yang blog post yang kita buat. Cool. Dan jika kita benar-benar pergi melalui keseluruhan proses membuat siaran blog baru, kita akan melihat semua yang pelencongan betul. Jika saya berkata, "Hi. Saya Jonathan Tan. " Katakanlah, "Ini adalah post blog saya." Hantar dan ia, ini akan mewujudkan ini blog post baru dengan ID 2, yang kenaikan dari apa yang kita mempunyai sebelum ini dan memaparkan dengan betul. Awesome. Apa-apa soalan? Ya? SPEAKER 2: Adakah Laravel pemegang sanitasi dan segala-galanya untuk anda? ERIC Ouyang: Ya. Oleh itu, apabila kita lihat sebelum ini apabila kami lakukan input kolon kolon mendapatkan, bahawa apa-apa sanitates SQL suntikan dan barang kecil bahawa kita mungkin mahu untuk melaksanakan jika kita seorang pengguna berniat jahat daripada laman web ini. Jadi Laravel mengendalikan banyak daripada yang di belakang tabir. Soalan yang baik. Oleh itu, marilah kita lihat di halaman rumah. Jadi, jika kita pertama kembali ke pengawal untuk halaman rumah, anda akan melihat bahawa ia tidak berbuat banyak di sini. Anda akan melihat bahawa kita tidak lulus ke dalam pengawal ini apa-apa terutamanya membantu. Ia hanya fail indeks ini. Jadi mari kita masuk ke dalam ini sesuatu yang berguna. Dan secara khusus, kami akan lulus dalam jawatan. Dan Laravel membolehkan kita untuk melakukan semua jawatan yang akan membolehkan kita untuk mendapatkan semua jawatan. Sekarang jika kita kembali kepada index.php, anda akan melihat, hey. Tiada apa-apa di sini lagi. Tetapi apa yang kita mahu lakukan di sini sebenarnya melelar melalui, melakukan gelung foreach alih jawatan yang membolehkan kita untuk mencetak jawatan. Jadi foreach jawatan sebagai jawatan, apa yang kita mahu lakukan adalah mencetak kandungan catatan blog. Tetapi satu perkara yang anda akan notis adalah bahawa kita sebenarnya telah menulis sebahagian besar daripada kod yang sudah, dalam view.blade.php. Jadi apa yang kita akan lakukan adalah sebenarnya menggunakan ciri baik membantu daripada Blade dan faktor luar kod biasa ini. Jadi kita pergi sini. Kami akan mengambil kandungan ini di sini, dan apa yang kita akan lakukan adalah membuat folder baru. Mari kita memanggilnya Partials. Dan di sini, kita akan untuk mewujudkan satu post.blade.php. Jadi di sini, kita kira daripada cara yang kami mahu memaparkan siaran ini. Dan di sini apa yang kami akan lakukan dan bukannya sebenarnya mempunyai HTML yang secara langsung, kita akan menggunakan arahan ini dipanggil termasuk blog.partials.post. Dan apa yang kita akan lakukan di sini adalah lulus dalam jawatan halaman. Oleh sebab itu jika kita kembali di sini, kita akan melihat bahawa fungsi itu masih yang sama. Tetapi sekarang kita mempunyai ini difaktorkan daripada kod, HTML ini. Oleh itu, kita boleh menggunakannya dalam Indeks. Jadi di sini, ini adalah sangat mudah. Apa yang kami lakukan adalah termasuk blog.partials.post dan mudah. Dan tempat untuk sebelum, kami pos pos. Oleh sebab itu jika kita kembali kepada halaman rumah, kita akan melihat bahawa, hey. Kami mempunyai senarai semua catatan blog yang kita ada sebelum ini. Kami mungkin mahu menambah beberapa "jika" syarat dan "lain" keadaan supaya jika kita tidak mempunyai apa-apa di blog, kami mahu memaparkan sesuatu yang berguna. Seperti, hey. Tiada kandungan lagi di blog. Dan jika kamu benar-benar melihat kod pengedaran pada GitHub, anda akan melihat satu contoh bagaimana yang kita lakukan itu. Cool. Apa-apa soalan? Ya. SPEAKER 2: Saya rasa hanya satu soalan asas. Kembali di laluan itu. ERIC Ouyang: Yeah. Jika kita lihat di laluan. SPEAKER 2: Di manakah uses.blogcontroller di buat pengumuman, apakah yang mengarahkan kita? ERIC Ouyang: Yeah. Yeah. SPEAKER 2: Atau apakah bahawa- ERIC Ouyang: Jadi, melihat, berkata sebagai contoh, laluan ini di sini. Bahagian pertama adalah sebenar URL yang pengguna akan pergi ke. Dan mudah ini di sini, array bersekutu, mentakrifkan bagaimana kita ingin mempunyai yang perbuatan permohonan sebagai tindak balas kepada ia. Jadi menggunakan adalah pengawal, fungsi yang kita mahu panggil apabila pengguna pergi ke URL ini. Jadi viewPost di sini adalah fungsi yang ditakrifkan di dalam kita daripada BlogController-- SPEAKER 2: saya lihat. ERIC Ouyang: --so kita bahawa sebenarnya boleh menyebabkan pandangan yang, melakukan beberapa pengiraan, berinteraksi dengan pangkalan data SQL. SPEAKER 2: OK. ERIC Ouyang: Dan kemudian yang lain bahagian, "sebagai" adalah alias yang kita gunakan. Oleh itu, jika kita lihat apabila kami mencipta bentuk, anda akan perasan bahawa URL :: routecreatePost. Jadi ia menggantikan dalam sebenar URL supaya kita tidak keras kod ini di jadi kita boleh mengubahnya sekali, berkata jika kita mahu menamakan semula. Daripada jawatan slash baru, yang kami mahu lakukan seperti, p slash baru hanya untuk membersihkan sehingga URL kami sedikit. Kami akan mengubahnya di satu tempat yang agak daripada semua fail yang berbeza. Cool. Itu baik. Jadi sekarang kita mempunyai sangat platform blog asas. Kita mungkin ingin menambah di butang jadi bahawa kita benar-benar dapat mewujudkan jawatan baru. Oleh itu, jika kita melihat dengan di Layout Master, kita mempunyai bahagian yang disebut Tandukan Kanan bahawa kita baru sahaja ditakrifkan sehingga di bahagian atas. Oleh itu, kita boleh menambah butang bahagian atas kepala. Jadi, jika kita pergi ke index.blade.php, sebenarnya lakukan adalah menentukan apa yang berlaku di dalam sini. Jadi seksyen Tandukan Hak ini, apa yang kita akan lakukan adalah tambah satu butang untuk pergi ke URL ditakrifkan melalui laluan jawatan baru. Hanya untuk membersihkannya dan membuat ia cantik dan semua Bootstrap, kita akan membuat butang ini lalai. Mari kita membuat ia besar untuk bersenang-senang. Dan di dalamnya, kita boleh meletakkan beberapa teks. Tetapi apa yang Bootstrap menyediakan adalah glyphicons. Oleh itu, kita benar-benar dapat menambah bahawa dalam bagus pensil yang kita lihat sebelum ini. Glyphicon. Glyphicon-pensil. Jadi ini akan membolehkan kita untuk meletakkan dalam ikon bukan teks. Sekarang jika kita berhenti, ini akan menentukan seksyen ini. Dan, hey. Kami mempunyai butang bagus yang menghubungkan kami terus kepada menambah halaman blog post. Jadi kita mempunyai satu blog yang agak mudah. Kita boleh menambah barangan kepadanya. Tetapi apa yang kita umumnya mengharapkan dari blog ini mengulas. Jadi ia adalah benar-benar penting bagi kita untuk mempunyai, berkata, jika orang lain melawat laman web dan benar-benar suka jawatan yang mereka boleh melibatkan diri dalam perbincangan dengan orang lain yang melawat halaman. Jadi, kita akan pergi dan membuat jadual pangkalan data baru dan model baru supaya kita boleh mengaitkan komen dengan jawatan. Jadi langkah pertama, sama seperti sebelum ini, ialah kami perlu menjalankan penghijrahan. Jadi seperti sebelum ini, kami lakukan php tukang berhijrah: membuat. Dan kita akan mewujudkan satu dipanggil create_comments_table. Ini akan mewujudkan fail yang mempunyai penghijrahan baru kami. Dan kita akan, seperti sebelum, menentukan jadual baru. Jadi Skema :: mewujudkan meja dipanggil komen. Fungsi ini di sini. Dan di dalam jadual ini apa kita akan lakukan ialah pertama, seperti sebelum ini, memberikan ID. Menokok ID. Kami akan membolehkan pengguna untuk mengaitkan nama mereka dengan komen tertentu. Kita akan mempunyai beberapa kandungan yang pergi bersama-sama dengan ini, kandungan teks. Dan di sini apa yang kita akan lakukan adalah sesuatu yang berbeza. Kami akan membuat integer yang dinamakan POST_ID yang akan menandakan apa jawatan komen tertentu pergi dengan. Di samping itu, kita sebenarnya akan menetapkan kekangan utama asing pada ini. Jadi MySQL akan menguatkuasakan itu. Kami tidak cuba memberi nombor komen 5 untuk pos 5000 jika kita tidak mempunyai mempunyai 5,000 jawatan di atasnya. Jadi apa yang kita lakukan di sini, kita lakukan POST_ID asing akan dikaitkan dengan medan ID daripada jawatan meja. Dan kami benar-benar akan melakukan sesuatu lain membantu, adalah onDelete. Jadi, jika kita padam beberapa post dari pangkalan data, yang kita mahu untuk melata menghapuskan untuk komen juga. Kerana ia tidak sangat membantu bagi kita untuk mempunyai komen pada siaran yang tidak wujud. Dan akhirnya, seperti sebelum ini, kami akan ditetapkan pada masa setem ini. Dan seperti sebelum ini, kita akan mempunyai penghijrahan terbalik menjadi menjatuhkan meja komen. Oleh sebab itu jika kita kembali ke sini, kita akan untuk menjalankan migrasi ini, tukang berhijrah. Dan kini ia digunakan ini penghijrahan yang kita buat. Oleh itu, jika kita lihat pada phpMyAdmin, yang kita lakukan, sebenarnya, kini mempunyai jadual komen yang mempunyai struktur yang kita hanya dinyatakan. Jadi seperti sebelum ini, kami akan mewujudkan model baru kepada abstrak jadual SQL yang kita buat. Jadi mari kita Tambah fail baru. Kami akan memanggilnya comment.php. Dan ini adalah benar-benar akan menjadi adil terus-terang dengan sedikit perubahan dari apa yang kita ada sebelum ini. Jadi kelas Komen memanjangkan Eloquent. Dan apa yang kita akan lakukan di sini adalah menentukan satu fungsi itu adalah hubungan dengan model-model lain. Jadi, kita akan mempunyai fungsi jawatan di sini yang mengembalikan hubungan ini. Jadi, kita menyatakan bahawa ini adalah milik kepada tiang, mengatakan bahawa terdapat satu jawatan bahawa komen yang dimiliki. Ini sebenarnya telah menjadi modal P untuk model. Dan kini hanya pada flip lain sampingan, kita perlu mengatakan bahawa, hey. Catatan mempunyai komen. Jadi apa yang kita akan lakukan adalah menentukan komen fungsi awam. Dan di sini dikembalikan Ulasan ini mempunyai banyak. Jadi sekarang ajaib apabila kita membuat post, kita boleh mendapatkan komen atribut dan ia akan menempatkan penduduk itu dengan maklumat dari pangkalan data. Jadi mari kita benar-benar pergi melalui dan menambah ciri-ciri baru ke fail pandangan kami supaya kita dapat kedua-dua paparan dan membuat ulasan. Jadi kita akan menentukan seksyen baru. Mari kita memisahkan ia dengan peraturan mendatar. Seksyen id = "komen". Apa yang kami akan lakukan di sini ialah, seperti sebelum ini, melelar melalui semua komen. Jadi sebenarnya bagaimana yang kita lakukan ini adalah, seperti yang saya nyatakan, yang agak ajaib. Kami melakukan yang menghantar komen. Dan kemudian kita boleh melakukan ini untuk setiap gelung ke atas setiap satu daripada komen. Dan apa yang kita akan lakukan adalah komen div class, dan kita akan benar-benar mencetak komen ini. Jadi memaparkan bahawa hey, mengulas name-- orang yang yang mencatatkan comment-- ini kata dot dot dot. Kami akan meletakkan ini dalam satu blok quote, hanya untuk membuat ia kelihatan bagus. Dan kemudian mengulas kandungan blok quote. Dan foreach. Jadi sekarang ini akan gelung melalui semua komen yang dikaitkan dengan setiap satu daripada jawatan dan memaparkan setiap komen mereka. Saya akan menambah seksyen lain turun di sini, yang membolehkan kita untuk menambah komen. Kelas Jadi h3. Letakkan tajuk di sini. Tambah komen. Dan kita akan menentukan bentuk baru. Jadi seperti sebelum ini, kami akan melakukan aksi. Dan di sini, tindakan baru adalah kami akan menentukan pengawal baru yang membolehkan kami untuk bertindak balas untuk pos permintaan untuk mewujudkan komen. Jadi URL :: laluan createComment. Saya akan lulus dalam parameter di sini. ID jawatan yang kami mewujudkan komen pada. Dan kemudian kaedah ini bentuk akan menjadi pos. Sekarang kita akan menambah di dua bidang, kumpulan bentuk. Ini akan menjadi input dengan menamakan "nama" dan class = "bentuk-kawalan", menaip = "text", dan dengan pemegang tempat = "nama anda." Kami juga akan menentukan lain medan borang yang akan menjadi teks kawasan seperti yang kita mempunyai di hadapan. Sama seperti sebelum ini, menyebutnya kandungan. Class = "bentuk-kawalan." Pemegang tempat = "Tulis di sini." Dan hanya supaya kita sebenarnya boleh menyerahkannya, mengemukakan jenis dan class = "BTN btn-rendah." Tutup borang. Tutup tindakan ini. Oleh sebab itu jika kita muat semula halaman ini di mana kita mempunyai, berkata, satu jawatan tertentu. Kita perlu reboot pelayan. PHP tukang berkhidmat. But semula ini. Kita perlu menentukan laluan. Tetapi buat masa ini, mari kita mengambil ini keluar supaya kita benar-benar dapat menunjukkan apa halaman yang kelihatan seperti, dan kemudian kita benar-benar akan buat laluan itu. Jadi, hey. Kami mempunyai bentuk baru ini ke sini supaya kita boleh membuat komen. Jadi mari kita sebenarnya menentukan fungsi dalam pengawal supaya kita boleh menambah komen. Mari kita kembali. Dan dalam blogcontroller.php, apa yang kita akan lakukan adalah mewujudkan fungsi baru dipanggil membuat komen. CreateComment fungsi awam. Ini akan mempunyai satu parameter, ID jawatan bahawa kita mengulas. Dan seperti sebelum ini, kami akan mula mendapat jawatan itu. Jadi tiang, findOrfail id. Selepas itu, kita akan untuk membuat komen baru. Jadi mengulas = Komen baru. Komen name = Input :: mendapatkan nama. Kandungan komen = baris baru yang sama ke dalam rehat Input :: dapatkan kandungan. Dan akhirnya, kita akan perlu mengaitkan komen ini dengan jawatan. Jadi, kita akan menggunakan fungsi ini, komen, yang membolehkan kita untuk menyelamatkan hubungan ini. Oleh sebab itu komen ini akan mempunyai secara automatik selepas ID. Kami juga boleh menetapkan secara manual, tetapi ini adalah lebih mudah untuk membaca sejauh sebagai fungsi padam. Dan selepas kita melaksanakan ini, apa yang kita mahu lakukan adalah mengarahkan pengguna kepada jalan yang dinyatakan oleh viewPost dengan array dengan parameter jawatan ID. Dan sekarang agar ini sebenarnya fungsi, kita perlu menentukan laluan ini. Laluan :: pos. Dan sekarang kita akan memanggil ini jawatan slash slash ID komen. Array menggunakan fungsi baru yang kita buat. BlogController. CreateComment sebagai createComment. Great. Oleh sebab itu diharapkan, jika kita muat semula halaman ini dan menambah dalam komen, berkata, David Malan. "Mudah-mudahan kerja-kerja ini." Hantar. Kami, sebenarnya, mempunyai mengulas pada siaran blog ini. Cool. Jadi sekarang kita mempunyai yang agak blog post berfungsi. Kami hanya akan menambah beberapa tweak jadi bahawa kita mempunyai beberapa lebih berguna maklumat mengenai jawatan-jawatan ini. Jadi, jika kita kembali kepada Laman depan, kita tidak mempunyai rasa berapa banyak komen adalah pada setiap jawatan-jawatan ini. Jadi apa yang kita benar-benar akan lakukan adalah, dalam model kita, menentukan fungsi penolong yang membolehkan kita untuk menentukan jumlah komen yang pergi dengan jawatan tertentu. Jadi, kita akan mewujudkan fungsi penolong. Fungsi awam. GetNumCommentsStr. Jadi rentetan yang menentukan jumlah komen yang pergi bersama-sama dengan ia. Dan apa yang kita akan lakukan adalah berkata num = yang komen ini mengira. Jadi kita akan mengira jumlah komen. Dan jika jumlah ini sama dengan 1, kami hanya akan kembali 1 komen. Dan kemudian jika tidak, kita mahu kembali yang dinamika daripada num dan komen, jadi kami mendapatkan pluralization yang betul. Hanya membuat petikan tunggal. Satu komen. Dan sekarang kita boleh menggunakan fungsi ini secara langsung di dalam pandangan kami. Jadi, jika kita kembali kepada jawatan separa yang kita dicipta, sekarang kita mahu untuk benar-benar memaparkan jumlah komen. Jadi apa yang boleh kita lakukan adalah pos, menggunakan fungsi ini bahawa kita hanya diwujudkan untuk memaparkan jumlah komen. Jadi, jika kita kini menyegarkan, ia tidak, sebenarnya, paparan komen nombor yang pergi bersama-sama dengan ia. Jika kita mahu menjadi mewah jika anda sebenarnya melihat kod pengagihan, kita sebenarnya boleh menghubungkan ini kepada komen. Jika anda masih ingat, kita ditakrifkan dalam melihat bahawa ini mempunyai komen seksyen ID. Jadi, jika kita benar-benar mahu untuk menghubungkan terus ke bahagian komen, apa yang kita akan lakukan di sini adalah a href URL viewPost laluan. Lulus ID array jawatan ID. Dan kemudian kita mahu pergi ke khususnya bahagian komen. Di sini mari kita menutup tag A. Oleh sebab itu jika kita menyegarkan ini halaman, kita klik pada ini. Kami akan pergi terus ke bahagian komen. Jika kita mempunyai jawatan yang lebih panjang, anda boleh sebenarnya melihat lantunan ini ke bawah. Tetapi anda akan perasan bahawa itu tidak di bahagian atas halaman. Cool. Great. Jadi itulah yang agak terus-terang contoh sesuatu yang mudah bahawa anda boleh lakukan dengan Laravel. Tetapi anda boleh melihat di sini bahawa kami telah melakukan banyak perkara-perkara dengan jumlah yang agak sedikit kod. Laravel membolehkan kita untuk melakukan perkara yang SQL pertanyaan di belakang tabir. Hal sanitasi yang untuk kita di belakang tabir. Membenarkan kita untuk melakukan hubungan ini sangat mudah tanpa kita perlu melakukan apa-apa SQL menyertai kenyataan kepada menggabungkan komen dengan apa jawatan. Membenarkan kita untuk melakukan ini pusaka template supaya kita boleh menentukan bersarang ini fail jadi kita tidak mengulangi diri kita sendiri, seperti apabila kita mempunyai yang paparan posting blog bahawa kita tidak perlu copy dan paste kod. Dan dari sini anda boleh membina aplikasi yang semakin rumit. Anda boleh bayangkan jika kita mahu melaksanakan log masuk kami mengatakan membawa masuk pihak ketiga rangka kerja yang membolehkan kita berbuat demikian. Ada sekumpulan daripada mereka yang benar-benar, benar-benar besar yang boleh melakukan seperti, pemulihan kata laluan. Dan ia akan menghantar kepada anda menetapkan semula kata laluan e-mel. Kita boleh melaksanakan kebenaran supaya saya boleh buat pengumuman, tetapi orang lain tidak boleh mengeditnya. Kita boleh melaksanakan fungsi memadam catatan. Tetapi anda boleh lihat di sini bahawa kita mempunyai cukup banyak semua komponen asas untuk membina beberapa benar-benar, benar-benar, aplikasi web yang dinamik dan menarik. Maka dengan itu, saya fikir kita baik. Adakah anda mempunyai sebarang soalan? Ya? SPEAKER 3: Bagaimana anda mendapatkan kandungan statik? ERIC Ouyang: Kandungan Statik. Jadi, anda melihat sebelum itu apabila kita mempunyai hak ini di sini, susun atur kandungan ini, pandangan make, kita mempunyai ini tanpa array ini selepas itu. Blog.index, kita mempunyai ini kerana hanya fail statik. Jadi, jika kita tidak lulus apa-apa yang bersama-sama dengannya, ia hanya akan menyebabkan HTML secara langsung. Tetapi jika kita lulus dalam bersekutu ini pelbagai jawatan, yang dinamik ditarik dari pangkalan data, kita boleh membuat halaman dinamik. Cool. Apa-apa soalan lain? SPEAKER 3: Bagaimana anda membandingkan Laravel untuk mungkin beberapa pilihan lain? ERIC Ouyang: Pasti. Yeah. Jadi Laravel is-- itulah yang question-- besar salah satu daripada banyak pilihan untuk rangka kerja web. Jadi Ruby on Rails adalah satu yang popular. Saya percaya Twitter digunakan untuk menjadi dilaksanakan dengan Ruby on Rails. Saya fikir mereka telah sejak dihidupkan. Ada satu lagi dipanggil FuelPHP. Jadi Ruby on Rails menggunakan bahasa Ruby yang dan melaksanakan banyak perkara yang MVC yang kita lihat di sini. FuelPHP adalah rangka kerja PHP lain. Django adalah salah satu kegemaran saya. Ia adalah satu rangka kerja untuk web Python. Jadi, anda boleh menulis aplikasi web anda dalam Python. Jadi ada satu tan pilihan ini. Laravel, saya fikir, oleh dan besar yang tepat kegemaran saya sekarang untuk PHP hanya kerana daripada komponen bahawa kita bercakap tentang awal. Ia ini Komposer yang aktif. Ia termasuk yang benar-benar, benar-benar sistem ORM ekspresif. Juga mempunyai template benar-benar menggerunkan bahasa yang beberapa yang lain hanya tidak menyediakan. Dan migrasi. Penghijrahan dahsyat juga. Cool? Awesome. Well, terima kasih banyak untuk menonton seminar ini, dan semoga berjaya pada projek akhir anda.