[MUSIC CHƠI] ERIC Ouyang: Hey, tất cả mọi người. Chào mừng. Đây là tòa động Web Apps với Laravel. Tên tôi là Eric Ouyang. Tôi là một sinh viên năm hai nghiên cứu xã hội học với một thứ khoa học máy tính, và tôi sống trong Adams Nhà ở đây tại Harvard. Vì vậy, Laravel, cốt lõi nhất của nó, là một MVC framework ứng dụng web. Vì vậy, giống như những gì các bạn có được làm với CS50 Tài chính, Laravel là một khuôn khổ cho phép bạn xây dựng các ứng dụng web động. Vì vậy, bạn có thể nghĩ về nó trong một số giác quan như một phần mở rộng của các loại công cụ bạn đã làm trong CS50 Tài chính, nhưng một hệ thống đó là rất nhiều mạnh mẽ hơn, rất nhiều thanh lịch hơn trong một số giác quan, và cung cấp rất nhiều chức năng cho bạn để xây dựng khá phức tạp các ứng dụng web. Vì vậy, chúng ta hãy điểm qua một số trong những tính năng quan trọng, và sau đó chúng ta sẽ đi sâu vào một ví dụ về xây dựng một blog ứng dụng với Laravel. Vì vậy, một trong những điều đầu tiên mà khác biệt với kiểu MVC làm việc mà bạn đã làm với CS50 là nó bao gồm một công cụ ORM. Vì vậy, ORM là viết tắt của đối tượng bản đồ quan hệ. Vì vậy, điều này cho phép bạn xây dựng một lớp trừu tượng giữa các cơ sở dữ liệu và các bộ điều khiển của bạn. Vì vậy, không giống như trong CS50 Tài chính nơi bạn trực tiếp để thực hiện truy vấn, lớp ORM cho phép bạn trừu tượng đó đi và tạo ra mô hình mà còn mạnh hơn bạn có thể trực tiếp với các truy vấn SQL. Một điều đó là thực sự hữu ích là mẫu di truyền. Vì vậy, bạn sẽ nhận thấy trong CS50 Tài chính, bạn kết thúc việc viết lại rất nhiều thứ, nơi những nơi bạn có thể có khả năng tái sử dụng những thứ, bạn không thể làm được. Vì vậy, ở đây trong Laravel, bạn có thể sử dụng những gì gọi là lưỡi mẫu động cơ để tạo ra một bố cục tổng thể. Và từ đó, bạn có thể kế thừa để phụ mẫu có thể thực sự bao gồm các yếu tố bên trong mà lớn hơn cơ sở mẫu. Migration. Vì vậy, đây là một tính năng khá chuẩn trên hầu hết các khung ứng dụng web hiện đại. Vì vậy, điều này cho phép bạn đại diện thay đổi giản đồ cơ sở dữ liệu trong mã. Vì vậy mà không đi đến nói, phpMyAdmin, bạn thực sự có thể tạo ra những cuộc di cư nơi bạn đại diện cho các cơ sở dữ liệu thay đổi giản đồ trong mã trực tiếp. Và điều này cho phép bạn với: đặc biệt nếu bạn có nhiều người làm việc trên application-- web cùng theo dõi những thay đổi này, nói trong GitHub, hoặc một số kho khác. Vì vậy, đây là thực sự hữu ích và giảm nhẹ nhu cầu đến, nói, vượt qua xung quanh rất nhiều SQL bãi. Và cuối cùng, Composer là một cái gì đó thực sự, thực sự hữu ích mà cho phép bạn sử dụng khác Mã của người dân để làm những điều tuyệt vời. Vì vậy, Laravel của cấu trúc như một số gói soạn nhạc. Vì vậy, nói rằng nếu bạn muốn mang trong một gói phần mềm xác thực hoặc nếu bạn muốn mang lại một số loại kịch bản phát hoặc một admin giao diện, bạn có thể cắm và chơi những thành phần với Composer. Vì vậy, chúng ta hãy bắt đầu. Bất kỳ câu hỏi từ bạn kẻ trước khi chúng tôi bắt đầu? Không có câu hỏi? Cool. Vì vậy, bước đầu tiên là cài đặt Composer. Vì vậy, Composer cho phép bạn quản lý các gói phụ thuộc, cho dù đó là khuôn khổ Laravel hoặc một số phần mở rộng của bên thứ ba khác. Lệnh đầu tiên cho phép bạn tải về Composer, và lệnh thứ hai cho phép bạn di chuyển nó vào thư mục bin địa phương của bạn để bạn có thể chạy Composer trực tiếp thông qua các thiết bị đầu cuối. Sau đó, đi trước và tạo ra một dự án Laravel mới. Chúng tôi đang thực sự đi vào sử dụng một số mã ví dụ mà tôi đã đặt cùng để tạo ra blog này. Nhưng nếu bạn đang bắt đầu từ đầu, bạn sẽ sử dụng lệnh này ở đây, nhà soạn nhạc tạo dự án, laravel giảm laravel, và sau đó tên của dự án của bạn. Và đó sẽ bao gồm tất cả các mã phân phối để bắt đầu một dự án mới Laravel. Vì vậy, đối với các dự án chính thức CS50 của bạn, bạn sẽ thấy có thể muốn sử dụng lệnh đó. Nhưng chúng ta sẽ bắt đầu với điều này. Vì vậy, một khi bạn đã thực hiện đó, bạn sẽ nhận được một số lượng khá rộng của các tập tin trong blog50. Vì vậy, chúng ta hãy đi qua một số các thành phần này. Bạn sẽ nhận thấy tại tuyến đường này thư mục, có một thư mục ứng dụng. Bên trong thư mục ứng dụng, có một vài thư mục hữu ích. Đáng chú ý để bắt đầu với là thư mục cấu hình này. Vì vậy, điều này đặt ra như thế nào ứng dụng web của bạn đi đến, nói, xác thực người hay thứ tiền mặt hoặc kết nối với cơ sở dữ liệu. Và những gì là thực sự hữu ích là Laravel cho phép bạn thiết lập khác nhau môi trường phát triển. Vì vậy, những gì chúng tôi đã thực hiện ở đây là nếu chúng ta đi theo các thư mục địa phương, có một file database.php. Và bạn sẽ nhận thấy ở đây là chúng ta thiết lập một kết nối MySQL mà cho phép các cá nhân để kết nối đến máy chủ MySQL đó trực tiếp trên thiết bị CS50. Và chúng ta đang kết nối với một cơ sở dữ liệu mà tôi thiết lập được gọi là Blog50. Vì vậy, chúng ta hãy thực sự đi trước và chạy các phiên bản làm việc này, chỉ để có được một cảm giác về những gì ứng dụng mà chúng ta đang xây dựng trông như thế nào. Vì vậy, tôi có một bản sao của Blog50 này hoàn thành. Vì vậy, Laravel thực đã được xây dựng trong một máy chủ mà bạn có thể chạy trực tiếp từ dòng lệnh. Vì vậy, đây là tương tự như các PSet trước khi bạn thực sự xây dựng máy chủ của riêng bạn trong C. Vì vậy, họ đã xây dựng trong một quá mà bạn có thể chạy các ứng dụng của bạn Laravel trực tiếp từ dòng lệnh. Vì vậy, nếu chúng ta làm php nghệ nhân phục vụ, điều này sẽ khởi động một máy chủ phát triển trên cổng 8000. Vì vậy, nếu chúng ta đi đến máy chủ của địa phương 8000, bạn sẽ nhận thấy rằng, hey. Chúng tôi có blog của chúng tôi lên và chạy. Vì vậy, ở đây là tạo Laravel các trang blog của chúng tôi. Ứng dụng rất đơn giản. Nhưng có một cặp vợ chồng tính năng thật sự tiện lợi mà nó cung cấp bên dưới mui xe. Vì vậy, các ứng dụng blog của đơn giản. Nếu chúng tôi muốn tạo ra một bài, chúng ta có thể nhấp vào nút đó. Chúng tôi có thể nói, "Hey, tất cả mọi người. Đây là một thực sự vui vẻ Hội thảo ", ví dụ. Và viết một cái gì đó ở đây. Văn bản ở đây. Nếu chúng ta nhấn Submit, bạn sẽ thấy nhận thấy rằng blog mới của chúng tôi Bài viết đã được thêm vào trang của blog. Nếu chúng ta trở lại đây, bạn sẽ nhận thấy rằng đã có một số ý kiến ​​đã trên blog. Vì vậy, nếu chúng ta di chuyển xuống, bạn sẽ thấy nhận thấy rằng Jonathan Tan nói rằng ông đã rất hấp dẫn bởi bài này. Vì vậy, chúng ta sẽ đi vào như thế nào đối tượng bản đồ quan hệ cho phép bạn làm các mối quan hệ trong một cách khá liền mạch là tốt. Cool. Bất kỳ câu hỏi về chức năng về những gì chúng ta sẽ xây dựng? Cool. Vì vậy, chúng ta hãy bắt đầu với thực tế tạo ra các bảng cơ sở dữ liệu. Vì vậy, nhớ lại rằng trong CS50 Tài chính, bạn đặt cùng một bảng cho người sử dụng cũng như cho cổ phiếu trong danh mục đầu tư của bạn. Vì vậy, như chúng tôi đã đề cập trước đó, những gì chúng tôi sử dụng trong Laravel là một cái gì đó gọi là sự di cư. Vì vậy, nếu chúng ta quay trở lại đang phân phối tại đây, lệnh đầu tiên là hữu ích mà Laravel cung cấp cho bạn là lệnh di cư này. Vì vậy, chúng ta có thể làm php nghệ nhân di cư: thực hiện. Vì vậy, điều này cho phép chúng ta tạo ra một sự chuyển đổi. Và sau đó chúng ta sẽ muốn để tạo ra một sự chuyển đổi gọi create_posts_table, mà là có là nơi mà chúng ta sẽ được lưu trữ bài viết trên blog của chúng tôi. Và bạn sẽ nhận thấy ở đây là nó chạy thông qua một số mã mà thực tạo ra một tập tin với một tem thời gian vào nó. Vì vậy, nếu chúng ta đi và nhìn vào cơ sở dữ liệu, chúng ta sẽ nhận thấy dưới Migrations mà nó được tạo ra một tập tin trống cho chúng ta mà có mã boilerplate với tên mà chúng tôi quy định, tạo ra bài viết bảng. Và nó có hai chức năng trong nó. Up là những gì chúng ta muốn chạy khi di cư được áp dụng đối với các cơ sở dữ liệu. Và xuống là những gì chúng tôi đang đi làm khi chúng ta muốn đảo ngược một di dân. Vì vậy, ở đây chúng ta hãy bắt đầu ra với văn bản di chuyển này. Vì vậy, có một lớp học hữu ích trong Laravel gọi Schema. Vì vậy, chúng tôi đang đi để chạy Schema :: tạo. Và chúng ta sẽ tạo ra một bảng gọi là bài viết. Và ở đây chúng tôi áp dụng điều này bằng cách sử dụng một chức năng. Và trong đây, chúng ta sẽ thực sự xác định nội dung của bảng của chúng tôi. Chúng ta sẽ tạo ra một ID, đó là tự động incrementing. Ngoài ra, chúng ta sẽ để tạo ra một lĩnh vực đại diện cho các tiêu đề của bài viết trên blog của chúng tôi. Chúng tôi cũng sẽ tạo ra một lĩnh vực để lưu trữ các văn bản của các bài viết trên blog của chúng tôi. Và cuối cùng, chúng ta sẽ để lưu trữ một số mốc thời gian khi bài của chúng tôi đã tạo ra và khi nó đã được cập nhật. Và cho xuống, nó khá đơn giản. Tất cả chúng tôi muốn làm là thả bảng mà chúng tôi đã tạo ra. Tuyệt vời. Bất kỳ câu hỏi? Vì vậy, bây giờ nếu chúng tôi đi trước và- thực sự, chủ của địa phương, cho tôi xóa những gì chúng tôi đã có trước đó. Tới Databases. Tôi sẽ xóa những gì chúng tôi đã có trước đó. Thả này và tạo ra một cơ sở dữ liệu mới Blog50. Vì vậy, bây giờ những gì kỳ diệu một phần là ở đây chúng tôi có thể áp dụng những cuộc di cư trực tiếp cơ sở dữ liệu bằng cách sử dụng dòng lệnh công cụ. Vì vậy, nếu chúng ta làm php nghệ nhân di cư, bạn sẽ nhận thấy rằng, hey. Nó tạo ra các bảng di cư, mà chúng ta sẽ có một cái nhìn tại trong một chút, và nó được áp dụng đầu tiên di cư này. Vì vậy, chúng ta nhìn vào Blog50, bạn sẽ nhận thấy mà nó được tạo ra hai bảng cho chúng ta. Đầu tiên là bàn di cư này. Vì vậy, nếu chúng ta duyệt này, bạn sẽ nhận thấy rằng bảng này là khá đơn giản. Nó chỉ nói rằng, hey. Chúng tôi đã áp dụng sự chuyển đổi này. Chúng tôi quay trở lại và nhìn vào bài viết. Bạn sẽ nhận thấy rằng cấu trúc là chính xác những gì chúng tôi đã yêu cầu nó. Chúng tôi có một ID tự động incrementing. Chúng tôi có một chuỗi để lưu trữ tiêu đề, và một lĩnh vực văn bản để lưu trữ các nội dung. Tuyệt vời. Cool. Bất kỳ câu hỏi về di cư công việc, làm thế nào chúng ta có thể áp dụng chúng? Không có? Cool. Vì vậy, bây giờ chúng ta sẽ đi trước và thực sự tạo ra các mô hình. Vì vậy, chúng tôi muốn tạo ra một mô hình bài viết đó lưu trữ một trừu tượng của cơ sở dữ liệu. Vì vậy, thay vì làm các truy vấn MySQL trực tiếp, chúng ta sẽ tạo ra. Vì vậy, chúng ta phải tạo ra một thư mục ở đây được gọi là mô hình. Và bên trong ở đây, chúng ta sẽ tạo ra một tập tin gọi là post.php. Bên trong file PHP này, chúng ta sẽ tạo ra một bài lớp mà kéo dài hùng hồn. Hùng hồn là tên của ORM cơ mà Laravel cung cấp. Và ở đây, chúng ta có thể mong đợi rằng bạn thực sự cần phải viết một số mã. Chúng ta sẽ viết một số chức năng trợ giúp sau đó. Nhưng ra khỏi hộp, điều này sẽ đã nhận ra những gì trong cơ sở dữ liệu và chúng ta có thể truy cập, nói rằng, các văn bản các bài viết trên blog của chúng tôi hoặc các tiêu đề, và tạo ra các công cụ trực tiếp với khá nhiều không có mã nào. Vì vậy, đó là một trong những thành phần kỳ diệu. Và gió một lần lớp này được đầy bản lĩnh hơn, chúng tôi sẽ bao gồm các thông tin về những gì nó liên quan đến, vì vậy các ý kiến. Cũng tạo ra một chức năng vì vậy chúng tôi có thể thực sự trực tiếp có được các URL của một trang blog. Cool. Mọi thắc mắc về điều đó? Không. Cool. Vì vậy bây giờ khi chúng tôi có mô hình của chúng tôi, chúng tôi muốn tạo ra một bộ điều khiển đó là khả năng giao tiếp với các mô hình này, Theo đó, các cơ sở dữ liệu. Vì vậy, nếu chúng ta có một cái nhìn tại BlogController, bạn sẽ thấy nhận thấy rằng có không nhiều ở đây ngay bây giờ. Tất cả có là một chức năng chỉ số mà tạo ra trang chủ, nhưng mà không có bất cứ điều gì có để hiển thị nào. Vì vậy, chức năng đầu tiên rằng chúng ta sẽ tạo ra là một trong đó cho phép chúng tôi để tạo ra một bài đăng blog. Vì vậy, chúng ta sẽ khai báo một chức năng mới được gọi là newPost. Và bên trong ở đây chỉ đơn giản là, chúng ta đang đi để thiết lập bố cục của trang này là một render phiên bản, nếu bạn nhớ lại từ CS50, của mẫu này được gọi là blog.new, mà chúng ta sẽ tạo ra một chút. Bạn sẽ nhận thấy đây trên dòng sáu mà chúng tôi xác định biến này, bố trí. Và nếu chúng ta có một cái nhìn tại thư mục Views, có một thư mục Layouts, mà bao gồm một tập tin HTML rất cơ bản. Và chú ý, bạn sẽ nhận thấy rằng chúng ta có chứa này ở đây rằng sản lượng nội dung. Vì vậy, bên trong mẫu của chúng tôi những gì chúng tôi đang đi làm đang tạo ra những gì đang xảy ra là thay thế trực tiếp trong cách bố trí này. Vì vậy, chúng ta nói rằng chúng ta muốn làm cho một mẫu gọi là blog.new. Nhưng bên trong của Blog, có chưa mẫu mới này. Vì vậy, chúng ta sẽ tạo ra một tập tin gọi là new.blade.php. Điều này cho rằng Laravel file PHP này nên được trả lại với các blade mẫu động cơ. Vì vậy, đây là một cách khá tập tin đơn giản. Đó sẽ là hình thức mà chúng tôi thực sự thêm vào một bài đăng blog. Vì vậy, sự kỳ diệu ở đây từ thừa kế là, hey. Chúng tôi muốn xác định rằng phần, phần nội dung ở đây, đó là mô tả bởisection vàstop. Vậy điều gì ở giữa ở đây sẽ cho được thay thế vào cách bố trí tổng thể. Và ở đây những gì chúng tôi muốn làm là rất đơn giản là tạo ra một tập tin HTML mới. Bạn chỉ cần thêm một tiêu đề nhanh chóng. Thêm một bài đăng blog. Và trong đó, chúng tôi sẽ tạo ra một biểu mẫu. Hình thức này sẽ có một hành động. Và điều này là có được một cái gì đó rằng chúng ta thay thế trong sau, và chúng ta sẽ thấy như thế nào định tuyến phù hợp ở đây. Nhưng chúng tôi chỉ cần đi để xác định cho doanh nghiệp rằng điều này đi đến một URL với các tuyến đường từ createPost. Và sau đó điều này sẽ có phương pháp bài. Trong đây, chúng ta đang đi có hai trường. Div class = "hình thức nhóm". Chúng tôi đang sử dụng các thư viện Bootstrap CSS ân cần cung cấp bởi Twitter. Vì vậy, chúng ta sẽ tạo ra hai trong số này. Vì vậy, đầu vào đầu tiên này là sẽ là tiêu đề. Vì vậy, tên input = "title". Class = "formcontrol". Type = "text". Tôi sẽ thêm một placeholder = "Title". Và sau đó là một thứ hai là sẽ là một vùng văn bản. Name = "nội dung". Class = "formcontrol". Và placeholder = "Viết vào đây". Hiện chúng tôi đi. Cuối cùng, chúng ta sẽ thêm một nút gửi nhanh. Type = "submit" class = "btn btn-chính". Vì vậy, đây là tất cả tính năng của Bootstrap nên rằng điều này có thể được đặt ra trong một cách đó là con mồi cho người sử dụng, chứ không phải là HTML khỏa thân. Vì vậy, chúng tôi đã xác định bộ điều khiển ở đây. Chúng tôi đã xác định một quan điểm rất đơn giản. Nhưng điều còn thiếu là các mô liên kết. Vì vậy, tại thời điểm này, Laravel không có ý tưởng như thế nào chúng ta sẽ thực sự truy cập vào bộ điều khiển này. Vì vậy, đây được định nghĩa trong một tập tin gọi là routes.php. Và ngay bây giờ, chúng tôi có một tuyến đường. Đó là khi chúng tôi đi đến con đường về nhà cho trang web này, nó sẽ làm cho bộ điều khiển chỉ số. Vì vậy, ở đây những gì chúng ta cần làm là thực hiện một con đường mới cho chúng tôi để tạo ra một bài. Vì vậy, chúng tôi sử dụng phương pháp này có được, trong đó xác định rằng khi người dùng cố gắng có được điều này page-- đặc biệt những bài chém page-- mới những gì chúng tôi đang đi làm được sử dụng các bộ điều khiển được gọi là Bài mới BlogController. Người mà chúng ta vừa tạo ra. Và sau đó chúng ta sẽ bí danh để nó như newPost. Chúng ta sẽ tạo ra một chức năng trong một chút. Nhưng những gì ở đây dưới các chính "như" là gì chúng ta có thể thay thế trong vòng Blade mẫu của chúng tôi. Vì vậy, bây giờ, chúng ta hãy thực sự cũng nói đường. Vì vậy, chúng tôi cũng đang đi để tạo ra một bộ điều khiển để chúng ta có thể tạo ra những bài viết. Vì vậy, nếu một người dùng đưa vào các bài trang giảm mới, những gì chúng tôi đang đi làm là sử dụng một bộ điều khiển chúng ta sẽ tạo ra một thời gian ngắn gọi BlogController tại createPost. Và chúng ta sẽ bí danh này với càng createPost. Cool. Bất kỳ câu hỏi? Cool. Vì vậy, chúng ta hãy chạy những gì chúng tôi có cho đến nay. Vì vậy, nếu chúng ta làm php nghệ nhân phục vụ, chúng ta sẽ thấy rất nhiều lỗi. Vì vậy, có vẻ như chúng ta có một lỗi cú pháp trên các tuyến đường 27. Ah. Thiếu một dấu chấm phẩy. Vì vậy, nếu chúng ta đi đến 8.000, bạn sẽ thấy không có gì ở đây nào. Vì vậy, đây là trang chủ mặc định. Nhưng nếu chúng ta đi gửi giảm mới, hey. Nó sẽ là hình thức mà chúng ta vừa tạo. Ngay bây giờ, chúng tôi có không thực hiện các chức năng khi chúng ta nhấn nút Submit. Vì vậy, nếu chúng ta click vào Gửi nút, nó sẽ chạy một lỗi. Nhưng chúng ta sẽ mã ngay bây giờ, chính xác những gì chúng tôi muốn làm gì khi một người sử dụng nộp mẫu đơn này. Vì vậy, chúng ta hãy làm điều đó. Quay trở lại các tập tin điều khiển. Những gì chúng tôi sẽ làm là thực hiện chức năng này mới cho phép chúng ta tạo ra một bài. Khai báo chức năng mới. Công chức năng createPost. Và chức năng này là có được một một chút phức tạp hơn nhiều so với những gì chúng tôi đã có trước đây. Nhưng bạn sẽ thấy ở đây mà chúng tôi không sẽ thực sự viết bất kỳ SQL. Các ORM, các hùng biện ORM, sẽ cho phép chúng ta phải làm điều này trong một số cách một cách thanh lịch hơn. Vì vậy, chúng ta sẽ tạo một bài mới. Và ở đây chúng tôi instantiating một đối tượng mới từ mô hình mà chúng ta chỉ tạo ra, các mô hình bài. Và những gì chúng ta sẽ làm là thiết lập thuộc tính tiêu đề của điều này bằng cách sử dụng một cái gì đó mà chúng tôi nhận được từ máy chủ. Vì vậy, điều này tương tự với những gì chúng tôi đã có trước đây trong CS50 Tài chính nơi mà chúng ta sẽ làm gì, bằng cách sử dụng siêu Toàn cầu bài tìm kiếm danh hiệu. Vì vậy, cung cấp một số Laravel vệ sinh và không có điều gì bằng cách sử dụng chức năng trợ giúp này. Vì vậy, chúng tôi muốn sử dụng này thay vì của nguyên mẫu này rất cơ bản từ PHP. Và sau đó những gì chúng ta sẽ làm là thiết lập nội dung của nó vào đầu vào có được nội dung. Chúng tôi đang thực sự xảy ra để bọc này trong một chức năng hữu ích PHP cung cấp giao tiếp gọi là nl2br, mà biến dòng mới, nls, vào PN, nghỉ giải lao, để chúng tôi thực sự có thể có đoạn khác nhau bên trong nó. Và cuối cùng là những gì chúng ta đang đi làm là lưu bài này. Vì vậy, chúng ta gọi hàm cứu trên mô hình này. Chúng tôi sẽ lưu các bài viết. Và cuối cùng là những gì chúng tôi đang đi làm được chuyển hướng người dùng đặc biệt các tuyến đường mà chúng ta sẽ tạo ra trong thời gian ngắn, bí danh của viewPost. Và chúng ta sẽ vượt qua trong các đối số id, là id của bài mới này. Tuyệt vời. Vì vậy, bây giờ nếu chúng ta thực sự đi và chạy này. Chúng ta sẽ thêm một bài mới. Hãy nói rằng đây là hội thảo 50. Và nói, chắc chắn. Asdl. Dù. Một số loại nội dung. Gửi và nó. Và chúng ta sẽ nhận thấy rằng, hey. tuyến đường không được xác định. Nhưng nếu chúng ta hãy nhìn vào phpMyAdmin và tìm kiếm hay không chức năng của chúng tôi đã làm bất cứ điều gì. Nhìn vào bài viết Blog50. Chúng ta sẽ nhận thấy rằng, hey. Trong thực tế, chúng tôi chỉ cần tạo blog gửi với các nhãn thời gian theo quy định. Vì vậy bây giờ chúng ta hãy quay trở lại và thực sự tạo ra chức năng khác trong bộ điều khiển của chúng tôi, đặc biệt là bộ điều khiển viewPost. Vì vậy, công hàm viewPost. Vì vậy, ở đây chúng ta sẽ làm, thay vì của việc có dấu ngoặc rỗng, chúng tôi sẽ muốn vượt qua trong các ID của những bài mà chúng tôi đang tạo. Và từ đây những gì chúng tôi đang đi làm thực sự là truy vấn cơ sở dữ liệu cho nó. Vì vậy, nếu chúng tôi gửi, có một chức năng gọi là Tìm cho phép chúng ta truy vấn nó bằng ID. Cụ thể, trên thực tế, chúng ta sẽ sử dụng một phiên bản khác của việc này được gọi là Tìm hay thất bại, trong đó cho phép chúng tôi bỏ ra của chức năng này, ném một ngoại lệ nếu ID chúng tôi vượt qua trong không tồn tại. Và sau đó chúng ta sẽ làm điều gì đó tương tự như những gì chúng ta đã làm trước đó nơi mà chúng tôi thiết lập các nội dung của trang này để được phiên bản render nhìn mới này mà chúng ta sẽ tạo ra, blog.view. Và chúng ta sẽ đi vào it-- giống như trong các CS50 làm function-- điển của các biến. Các phím của mảng kết này trở thành các biến trong các mẫu. Vì vậy, chúng tôi đang đi để làm bài viết. Vì vậy, vượt qua các bài viết đó gián tiếp chúng tôi đã truy vấn từ các cơ sở dữ liệu. . Bây giờ những gì chúng ta đang đi làm là tạo ra quan điểm này để chúng tôi thực sự có thể xem Các bài blog mà chúng tôi đã xây dựng. Vì vậy, chúng ta sẽ tạo ra một tập tin gọi là view.blade.php. Vì vậy, bên trong các mẫu này, những gì chúng tôi đang đi làm được đặt cùng một trang đơn giản mà cho phép chúng tôi để hiển thị nội dung. Vì vậy, chúng tôi làm phần, đó là trước khi nội dung. Dừng. Và những gì chúng ta đang đi làm trong đây là viết một số HTML để hiển thị trang này. Vì vậy, chúng tôi đang đi để bọc nó với một ưa thích yếu tố HTML5 mới gọi là Điều. Và ở đây, chúng ta đang đi để có một tiêu đề nơi chúng ta sẽ chỉ đơn giản là có một h1, trong đó bao gồm các tiêu đề bài viết. Vì vậy, ở đây, nếu chúng ta nhìn vào điều này double ký hiệu ngoặc móc, điều này sẽ làm cơ bản PHP vang tiêu đề bài. Vì vậy, nó là một cách viết tắt hữu ích mà Laravel cung cấp cho chúng tôi. Vì vậy, chúng ta sẽ sử dụng ký hiệu này thay thế. Và ở đây, chúng ta sẽ còn in ra nội dung của nó. Và ở đây, chúng ta đang đi để làm nội dung bài viết. Và xuống ở dưới cùng những gì chúng tôi sẽ làm là tạo ra một chân. Và ở phần cuối trang, chúng ta sẽ màn hình đầu tiên khi điều này đã được đăng. Vì vậy, đây được đăng tại, tạo ra tại. Và Laravel sử dụng một thực sự tốt đẹp thư viện ngày gọi Carbon. Vì vậy, chúng tôi thực sự có thể làm một cái gì đó gọi là difforHumans, mà bạn đã thấy trước đó. Khi chúng tôi đăng. nó sẽ nói, như, năm giây. Vì vậy, đây là một thực sự tốt đẹp chức năng của Laravel. Và cuối cùng, chúng ta sẽ đóng chân này. Vì vậy, bây giờ nếu chúng ta quay trở lại Trang chủ chúng ta đang đi để xem có gì ở đây nhưng vì chúng tôi đã không được mã hóa lên trang chủ. Nhưng nếu chúng ta đi gửi một dấu gạch chéo, chúng ta sẽ thấy một ngoại lệ. Có ai biết tại sao chúng ta thấy một ngoại lệ? Chúng ta đang thiếu gì? Bất cứ ý tưởng? Vì vậy, những gì đã làm chúng tôi làm trước đó đối với chúng tôi thực sự để xác định như thế nào chúng tôi nhận được bộ điều khiển đặc biệt? SPEAKER 1: Các tuyến đường? ERIC Ouyang: Yeah. Vì vậy, chúng tôi vẫn còn phải xác định các tuyến đường. Vì vậy, chúng tôi quay trở lại đây để routes.php. Bạn sẽ nhận thấy rằng chúng tôi chưa thực sự được xác định làm thế nào chúng ta sẽ có được để điều khiển này. Vì vậy, bây giờ chúng ta sẽ xác định tuyến đường này. Đó là khá đơn giản, tương tự như những gì chúng ta đã làm trước đó. Nhưng những gì chúng ta sẽ nhận thấy ở đây là rằng chúng ta sẽ có một placeholder. Vì vậy, nếu chúng ta làm dấu gạch chéo bài route.get ID. Vì vậy, ID tại là những gì đang xảy đến được thông qua vào bộ điều khiển. Điều này sẽ sử dụng các bộ điều khiển mà chúng ta chỉ tạo, BlogController tại viewPost. Và chúng ta sẽ bí danh này như viewPost. Tuyệt vời. Vì vậy, bây giờ chúng ta sẽ tạo ra tuyến đường này. Vì vậy, bây giờ nếu chúng ta đi đây và làm mới trang này, chúng ta thực sự không có bài đăng blog mới của chúng tôi. Vì vậy, đây là những gì chúng ta đã tạo trước đó. Rất trang đơn giản, nhưng hiển thị các bài blog mà chúng ta vừa tạo. Cool. Và nếu chúng ta thực sự đi qua toàn bộ Quá trình tạo một bài đăng blog mới, chúng ta sẽ nhận thấy rằng tất cả mọi thứ chuyển hướng đúng. Nếu tôi nói, "Hi. Tôi Jonathan Tân. " Nói, "Đây là bài viết trên blog của tôi." Gửi và nó, điều này sẽ tạo ra bài đăng blog mới với ID 2, mà increments từ những gì chúng tôi đã có trước đây và nó sẽ hiển thị đúng. Awesome. Bất kỳ câu hỏi? Có? SPEAKER 2: Liệu Laravel xử lý vệ sinh và tất cả mọi thứ cho bạn? ERIC Ouyang: Yes. Vì vậy, khi chúng ta đã thấy trước khi chúng tôi đã làm đầu vào ruột kết tràng có được, mà sanitates bất kỳ SQL tiêm và không có điều gì rằng chúng ta có thể muốn thực hiện nếu chúng tôi là một người sử dụng độc hại của các trang web. Vì vậy, Laravel xử lý rất nhiều đó đằng sau hậu trường. Câu hỏi hay. Vì vậy, chúng ta hãy có một cái nhìn tại trang chủ. Vì vậy, nếu chúng ta đầu tiên quay trở lại điều khiển cho trang chủ, bạn sẽ nhận thấy rằng nó không làm được gì nhiều ở đây. Bạn sẽ nhận thấy rằng chúng tôi không đi vào bộ điều khiển này bất cứ điều gì đặc biệt hữu ích. Nó chỉ là tập tin chỉ số này. Vì vậy, chúng ta hãy đi vào một cái gì đó hữu ích. Và đặc biệt, chúng tôi sẽ vượt qua trong bài viết. Và Laravel cho phép chúng tôi để làm bài tất cả, mà sẽ cho phép chúng tôi để nhận được tất cả các bài viết. Bây giờ nếu chúng ta quay trở lại index.php, bạn sẽ thấy, hey. Không có gì ở đây nào. Nhưng những gì chúng tôi muốn làm ở đây thực sự là lặp qua, làm một vòng lặp foreach qua các bài viết mà cho phép chúng ta in ra các bài viết. Vì vậy, bài viết foreach như bài, những gì chúng tôi muốn làm được in ra nội dung của các bài đăng blog. Nhưng có một điều bạn sẽ nhận thấy là chúng tôi thực sự viết hầu hết các mã đã có, trong view.blade.php. Vì vậy, những gì chúng ta sẽ thực sự làm là sử dụng một tính năng hữu ích tốt đẹp của Blade và yếu tố ra mã phổ biến này. Vì vậy, chúng tôi đi đây. Chúng tôi sẽ đưa nội dung này ngay tại đây, và những gì chúng tôi đang đi làm là tạo ra một thư mục mới. Chúng ta chỉ cần gọi nó Partials. Và ở đây, chúng ta đang đi để tạo ra một post.blade.php. Vì vậy, ở đây, chúng ta yếu tố ra khỏi đường đi trong mà chúng ta muốn hiển thị những bài viết. Và ở đây chúng ta sẽ làm thay thực sự có HTML, trực tiếp chúng ta sẽ sử dụng chỉ thị này gọi bao gồm blog.partials.post. Và những gì chúng ta sẽ làm gì đây là vượt qua trong các bài của các trang. Vì vậy, bây giờ nếu chúng ta trở lại đây, chúng tôi sẽ nhận thấy rằng các chức năng vẫn là giống nhau. Nhưng bây giờ chúng tôi có điều này yếu tố ra mã HTML này. Vì vậy, chúng ta có thể sử dụng nó trong Index. Vì vậy, ở đây, điều này rất đơn giản. Tất cả chúng tôi làm là bao gồm blog.partials.post và mảng. Và nơi nào đó để trước đây, chúng tôi làm bài viết. Vì vậy, bây giờ nếu chúng ta quay trở lại trang chủ, chúng ta sẽ thấy rằng, hey. Chúng tôi có một danh sách của tất cả các bài viết blog mà chúng tôi đã có trước đây. Chúng tôi có thể muốn thêm một số "nếu" điều kiện và điều kiện "khác" nên nếu chúng ta không có bất cứ điều gì trên blog, chúng ta muốn hiển thị một cái gì đó hữu ích. Giống như, hey. Không có nội dung nào trên blog. Và nếu các bạn thực sự nhìn vào mã phân phối trên GitHub, bạn sẽ thấy một ví dụ về cách chúng tôi làm điều đó. Cool. Bất kỳ câu hỏi? Vâng. SPEAKER 2: Tôi đoán chỉ một câu hỏi cơ bản. Trở lại con đường. ERIC Ouyang: Yeah. Nếu chúng ta có một cái nhìn tại các tuyến đường. SPEAKER 2: Trường hợp nào thì các uses.blogcontroller tại tạo bài, những gì mà đạo chúng ta? ERIC Ouyang: Yeah. Yeah. SPEAKER 2: Hoặc là that-- ERIC Ouyang: Vì vậy, có một cái nhìn, nói Ví dụ, tuyến đường này ngay tại đây. Phần đầu tiên là thực tế URL mà người dùng sẽ đi đến. Và mảng này ở đây, mảng kết hợp, định nghĩa làm thế nào chúng ta muốn có ứng dụng hành động để đối phó với nó. Vì vậy, sử dụng là bộ điều khiển, các chức năng mà chúng tôi muốn gọi khi một dùng đi vào URL này. Vì vậy viewPost ngay đây là một chức năng mà chúng ta định nghĩa bên trong của BlogController-- SPEAKER 2: Tôi thấy. ERIC Ouyang: --so chúng tôi rằng thực sự có thể làm cho một cái nhìn, thực hiện một số tính toán, tương tác với cơ sở dữ liệu SQL. SPEAKER 2: OK. ERIC Ouyang: Và sau đó các khác một phần, "như" là một bí danh mà chúng tôi sử dụng. Vì vậy, nếu chúng tôi nhận thấy khi chúng tôi tạo ra các hình thức, bạn sẽ nhận thấy rằng URL :: routecreatePost. Vì vậy, nó sẽ thay thế trong thực tế URL để chúng ta không khó mã hóa này trong vì vậy chúng tôi có thể thay đổi nó một lần, nói rằng nếu chúng tôi muốn đổi tên. Thay vì bài slash mới, chúng tôi muốn làm như thế, p giảm mới chỉ để làm sạch URL của chúng ta lên một chút. Chúng tôi sẽ thay đổi nó ở một chỗ khá hơn trên tất cả các tập tin khác nhau. Cool. Đó là tốt. Vì vậy, bây giờ chúng tôi có một rất nền tảng blog cơ bản. Chúng tôi có thể muốn thêm vào một nút để rằng chúng ta thực sự có thể tạo bài viết mới. Vì vậy, nếu chúng ta có một cái nhìn tại Layout Master, chúng ta có một phần gọi là Header Ngay rằng chúng ta xác định lên ở đầu trang. Vì vậy, chúng ta có thể thêm các nút để đầu của tiêu đề. Vì vậy, nếu chúng ta đi index.blade.php, thực sự làm là xác định những gì diễn ra bên trong đây. Vì vậy, phần header phải này, những gì chúng tôi đang đi làm được thêm vào một nút để đi đến URL xác định bởi các bài tuyến mới. Chỉ cần để làm sạch nó lên và đảm nó đẹp và tất cả Bootstrap, chúng ta sẽ làm cho nút này mặc định. Hãy chỉ làm cho nó lớn cho vui. Và bên trong nó, chúng ta có thể đặt một số văn bản. Nhưng những gì Bootstrap cung cấp là glyphicons. Vì vậy, chúng tôi thực sự có thể thêm vào đó bút chì tốt đẹp mà chúng ta đã thấy trước đó. Glyphicon. Glyphicon bút chì. Vì vậy, điều này sẽ cho phép chúng tôi để đặt trong một biểu tượng thay vì văn bản. Bây giờ nếu chúng ta dừng lại, điều này sẽ xác định phần này. Và, hey. Chúng tôi có một nút tốt đẹp mà chúng tôi liên kết trực tiếp đến việc thêm một trang blog. Vì vậy, chúng tôi có một blog khá đơn giản. Chúng ta có thể thêm các công cụ để nó. Nhưng những gì chúng ta thường mong đợi từ các blog được bình luận. Vì vậy, nó thực sự quan trọng đối với chúng tôi để có, nói, nếu ai đó ghé thăm một trang web và thực sự thích bài đó họ có thể tham gia thảo luận với những người khác, những người truy cập vào trang. Vì vậy, chúng ta sẽ đi và tạo ra một bảng cơ sở dữ liệu mới và một mô hình mới để chúng tôi có thể kết hợp Các bình luận với bài viết. Vì vậy, bước đầu tiên, giống như trước đây, là chúng ta cần phải chạy một di dân. Vì vậy, như trước đây, chúng tôi làm php nghệ nhân di cư: thực hiện. Và chúng ta sẽ tạo ra một gọi create_comments_table. Điều này sẽ tạo ra một tập tin có di dân mới của chúng tôi. Và chúng ta sẽ đến, như trước, xác định một bảng mới. Vì vậy, tạo một Schema :: bảng gọi là ý kiến. Chức năng này tại đây. Và bên trong bảng này những gì chúng ta sẽ làm là đầu tiên, như trước đây, gán một ID. Gia số ID. Chúng tôi sẽ cho phép người sử dụng để liên kết tên của họ với một lời nhận xét cụ thể. Chúng ta sẽ có một số nội dung đi cùng với điều này, nội dung văn bản. Và ở đây những gì chúng ta sẽ làm là một cái gì đó khác nhau. Chúng ta sẽ tạo ra một số nguyên đó được gọi là post_id mà sẽ biểu những gì bài viết một lời nhận xét đặc biệt đi với. Ngoài ra, chúng tôi đang thực sự đi vào thiết lập một ràng buộc khoá ngoại trên này. Vì vậy, MySQL sẽ thi hành điều đó. Chúng tôi không cố gắng để gán số bình luận 5 đến gửi 5000 nếu chúng ta không có đã có 5.000 bài viết trên đó. Vì vậy, những gì chúng tôi làm ở đây, chúng ta làm post_id nước ngoài sẽ được liên kết với ID lĩnh vực từ các bài viết bảng. Và chúng ta sẽ thực sự làm một cái gì đó khác hữu ích, là onDelete. Vì vậy, nếu chúng ta xóa một số gửi từ các cơ sở dữ liệu, mà chúng tôi muốn thác các xóa cho ý kiến ​​là tốt. Bởi vì nó không phải là rất hữu ích để chúng tôi có ý kiến ​​về bài viết không tồn tại. Và cuối cùng, như trước đây, chúng tôi sẽ đặt dấu thời gian này. Và cũng giống như trước đây, chúng ta sẽ có sự di cư ngược được thả bảng nhận xét. Vì vậy, bây giờ nếu chúng ta quay trở lại đến đây, chúng ta sẽ để chạy di cư này, nghệ nhân di cư. Và bây giờ nó được áp dụng này di cư mà chúng ta vừa tạo. Vì vậy, nếu chúng ta nhìn vào phpMyAdmin, chúng ta làm, trong thực tế, doanh nghiệp có một bảng nhận xét rằng có cấu trúc mà chúng ta vừa chỉ định. Vì vậy, như trước đây, chúng tôi sẽ tạo ra một mô hình mới để tóm tắt các bảng SQL mà chúng ta vừa tạo. Vì vậy, hãy thêm một tập tin mới. Chúng tôi sẽ gọi nó là comment.php. Và điều này thực sự có được khá đơn giản với một thay đổi nhỏ từ những gì chúng ta có trước. Vì vậy, lớp học kéo dài Comment hùng biện. Và những gì chúng ta đang đi để làm ở đây được xác định một chức năng mà là mối quan hệ với các mô hình khác. Vì vậy, chúng ta sẽ có một chức năng bài ở đây mà trả về mối quan hệ này. Vì vậy, chúng tôi xác định rằng này thuộc về gửi, nói rằng có một bài rằng nhận xét này thuộc về. Điều này thực sự có được P vốn cho mô hình. Và bây giờ chỉ cần trên flip khác bên, chúng tôi phải nói rằng, hey. Bài viết có ý kiến. Vì vậy, những gì chúng ta sẽ làm là xác định chức năng bình luận nào. Và ở đây được trả về này có nhiều bình luận. Vì vậy, tại kỳ diệu khi chúng ta có một bài, chúng ta có thể nhận được những ý kiến ​​thuộc tính và nó sẽ cư nó với thông tin từ các cơ sở dữ liệu. Vì vậy, chúng ta hãy thực sự đi qua và thêm một tính năng mới để xem file của chúng tôi để chúng tôi có thể hiển thị cả và tạo ra ý kiến. Vì vậy, chúng ta sẽ xác định một phần mới. Hãy chỉ riêng nó với một quy tắc ngang. Phần id = "ý kiến". Những gì chúng tôi đang đi làm ở đây là, như trước đây, lặp qua tất cả các ý kiến. Vì vậy, thực sự như thế nào chúng ta làm điều này là, như tôi đã đề cập, khá huyền diệu. Chúng tôi gửi ý kiến. Và sau đó chúng ta có thể làm điều này cho mỗi vòng lặp hơn so với từng ý kiến. Và những gì chúng ta đang đi làm là lớp div bình luận, và chúng ta sẽ thực sự in ra nhận xét này. Vì vậy, hiển thị rằng hey, bình luận name-- người đã đăng comment-- này nói dot dot dot. Chúng ta sẽ đặt điều này trong một khối quote, chỉ để làm cho nó trông đẹp. Và sau đó nhận xét nội dung block quote. Và foreach. Vì vậy, bây giờ điều này sẽ lặp qua tất cả các bình luận đó là liên kết với nhau của các bài viết và hiển thị mỗi người cảm nhận. Tôi sẽ thêm phần khác xuống ở đây, trong đó cho phép chúng tôi để thêm một bình luận. Vì vậy, lớp h3. Đặt một danh hiệu ở đây. Thêm một lời nhận xét. Và chúng ta sẽ xác định một hình thức mới. Vì vậy, như trước đây, chúng tôi sẽ làm form action. Và ở đây, các hành động mới là chúng tôi sẽ xác định một bộ điều khiển mới cho phép chúng tôi đáp ứng gửi yêu cầu đối với việc tạo ra ý kiến. Vì vậy, URL :: tuyến createComment. Tôi sẽ vượt qua trong các tham số ở đây. ID của bài đó chúng tôi đang tạo ra bình luận trên. Và sau đó phương pháp này hình thức là có được bài. Bây giờ chúng ta sẽ thêm vào một hai lĩnh vực, nhóm mẫu. Điều này là có được một đầu vào với các name "tên" và class = "hình thức kiểm soát", type = "text", và với placeholder = "tên của bạn." Chúng tôi cũng sẽ xác định một lĩnh vực hình thức, mà là có được một văn bản khu vực như chúng ta có trước đây. Cũng giống như trước, gọi nó là nội dung. Class = "hình thức kiểm soát." Placeholder = "Viết ở đây." Và chỉ để chúng tôi thực sự có thể gửi nó, gửi loại và class = "btn btn-chính." Đóng các hình thức. Đóng hành động này. Vì vậy, bây giờ nếu chúng tôi làm mới trang này, nơi chúng ta có, nói rằng, một bài cụ thể. Chúng tôi phải khởi động lại máy chủ. PHP nghệ nhân phục vụ. Khởi động lại máy này. Chúng ta phải xác định các tuyến đường. Nhưng bây giờ, chúng ta hãy chỉ thực hiện việc này ra để chúng ta thực sự có thể hiển thị cho bạn những gì trang trông giống như, và sau đó chúng ta sẽ thực sự tạo ra con đường đó. Vì vậy, hey. Chúng có hình thức mới này xuống đây để chúng ta có thể tạo ra ý kiến. Vì vậy, chúng ta hãy thực sự xác định một chức năng trong bộ điều khiển để chúng ta có thể thêm ý kiến. Hãy quay trở lại. Và trong blogcontroller.php, những gì chúng tôi đang đi làm là tạo ra một chức năng mới gọi là tạo ra nhận xét. Công chức năng createComment. Điều này sẽ có một đơn tham số, các ID của bài viết rằng chúng ta đang bình luận về. Và cũng giống như trước đây, chúng tôi đi đầu tiên nhận được bài. Vì vậy, đăng bài, findOrfail id. Sau đó, chúng ta sẽ để tạo ra một nhận xét mới. Vì vậy, bình luận = new luận. Bình luận name = Input :: có được tên. Nội dung comment = cùng một đường dây mới vào giờ nghỉ của Input :: có được nội dung. Và cuối cùng, chúng ta sẽ phải kết luận điều này với các bài. Vì vậy, chúng ta sẽ sử dụng chức năng này, ý kiến, cho phép chúng ta lưu lại mối quan hệ này. Vì vậy bây giờ nhận xét này sẽ có tự động các bài ID. Chúng tôi cũng có thể thiết lập nó bằng tay, nhưng điều này là dễ dàng hơn để đọc như xa như các chức năng đi. Và sau khi chúng tôi thực hiện này, những gì chúng tôi muốn làm là chuyển hướng người dùng đến tuyến đường theo quy định của viewPost với các mảng với tham số của bài viết ID. Và bây giờ để điều này thực sự chức năng, chúng ta cần phải xác định tuyến đường này. Route :: bài. Và bây giờ chúng ta sẽ gọi đây bài chém ID slash nhận xét. Mảng sử dụng các chức năng mới mà chúng ta vừa tạo. BlogController. CreateComment như createComment. Tuyệt vời. Vì vậy bây giờ hy vọng nếu chúng tôi làm mới trang này và thêm vào trong một bình luận, nói rằng, David Malan. "Hy vọng rằng công trình này." Gửi. Chúng tôi, trên thực tế, có một bình luận về bài viết trên blog này. Cool. Vì vậy, bây giờ chúng ta có một cách khá bài blog của chức năng. Chúng tôi chỉ cần đi để thêm một vài tinh chỉnh để rằng chúng tôi có một số hữu dụng hơn thông tin về các bài viết. Vì vậy, nếu chúng ta quay trở lại Trang trước, chúng tôi không có ý nghĩa có bao nhiêu ý kiến ​​được trên mỗi bài viết. Vì vậy, những gì chúng tôi đang thực sự đi làm là, bên trong mô hình của chúng tôi, định nghĩa một hàm helper cho phép chúng ta phải xác định số lượng comment mà đi với một bài cụ thể. Vì vậy, chúng ta sẽ tạo ra một chức năng trợ giúp. Chức năng công cộng. GetNumCommentsStr. Vì vậy, một chuỗi mà chỉ số các ý kiến ​​mà đi cùng với nó. Và những gì chúng ta sẽ làm là nói num = rằng ý kiến ​​này đếm. Vì vậy, chúng ta sẽ tính số lượng ý kiến. Và nếu con số này bằng 1, chúng tôi chỉ cần đi để trả lại 1 nhận xét. Và sau đó nếu không, chúng tôi muốn trở lại nối của num và ý kiến, Từ đó, có pluralization đúng. Chỉ cần thực hiện điều này một giá duy nhất. Một nhận xét. Và bây giờ chúng ta có thể sử dụng chức năng này trực tiếp bên trong các điểm của chúng tôi. Vì vậy, nếu chúng ta quay trở lại viết một phần mà chúng tôi tạo ra, bây giờ chúng tôi muốn thực sự hiển thị số ý kiến. Vì vậy, những gì chúng ta có thể làm là bài, sử dụng chức năng này mà chúng ta vừa tạo ra để hiển thị số ý kiến. Vì vậy, nếu bây giờ chúng ta làm mới, nó không có gì, trên thực tế, màn hình hiển thị các ý kiến ​​số mà đi cùng với nó. Nếu chúng tôi muốn được ưa thích nếu bạn thực sự nhìn vào các mã phân phối, chúng tôi thực sự có thể liên kết này cho ý kiến. Nếu bạn nhớ lại, chúng tôi xác định trong xem rằng điều này có ý kiến ​​phần ID. Vì vậy, nếu chúng ta thực sự muốn liên kết trực tiếp vào phần bình luận, những gì chúng tôi sẽ làm ở đây là một href URL của tuyến đường viewPost. Pass trong mảng ID của bài ID. Và sau đó chúng tôi muốn đi đến đặc biệt là phần bình luận. Ở đây chúng ta hãy đóng một thẻ. Vì vậy, bây giờ nếu chúng tôi làm mới này trang, chúng ta click vào đây. Chúng tôi sẽ đi thẳng tới phần ý kiến. Nếu chúng tôi đã có một bài viết dài hơn, bạn có thể thực sự thấy thư bị trả lại này xuống. Nhưng bạn sẽ nhận thấy rằng nó không ở trên cùng của trang. Cool. Tuyệt vời. Vì vậy, đó là một cách khá đơn giản ví dụ về một cái gì đó đơn giản mà bạn có thể làm với Laravel. Nhưng bạn có thể nhận thấy ở đây là chúng tôi đã làm được rất nhiều điều với khá ít số lượng mã. Laravel cho phép chúng ta làm Truy vấn SQL đằng sau hậu trường. Nó làm vệ sinh cho chúng ta đằng sau hậu trường. Cho phép chúng tôi làm các mối quan hệ rất dễ dàng mà không cần chúng tôi để làm bất kỳ SQL tham gia báo cáo để kết hợp với nhận xét những gì các bài viết. Cho phép chúng ta làm điều này thừa kế của các mẫu để chúng ta có thể xác định các tổ tập tin như vậy chúng ta không lặp lại chính mình, giống như khi chúng tôi đã có hiển thị các bài đăng trên blog rằng chúng ta không cần phải sao chép và dán mã. Và từ đây bạn có thể xây dựng ứng dụng ngày càng phức tạp. Bạn có thể tưởng tượng nếu chúng ta muốn thực hiện đăng nhập, chúng ta có thể nói, mang lại một bên thứ ba khuôn khổ cho phép chúng ta làm điều đó. Có một bó của họ đó là thực sự, thực sự tuyệt vời mà có thể làm như thế, khôi phục mật khẩu. Và nó sẽ gửi cho bạn một thiết lập lại mật khẩu email. Chúng tôi có thể thực hiện các phép vì vậy mà tôi có thể tạo ra một bài, nhưng người khác không thể chỉnh sửa nó. Chúng tôi có thể thực hiện chức năng để xóa bài viết. Nhưng bạn có thể thấy ở đây là chúng ta có khá nhiều tất cả các thành phần thô sơ xây dựng một số thực sự, thực sự, ứng dụng web năng động và thú vị. Vì vậy, với điều đó, tôi nghĩ rằng chúng tôi đang tốt. Các anh có bất kỳ câu hỏi? Có? SPEAKER 3: Làm thế nào để bạn có nội dung tĩnh? ERIC Ouyang: nội dung tĩnh. Vì vậy, bạn đã thấy trước đó khi chúng tôi đã có quyền này ở đây, nội dung cách bố trí này, view make, chúng tôi đã có điều này không có mảng này sau đó. Blog.index, chúng tôi đã có điều này như chỉ là một tập tin tĩnh. Vì vậy, nếu chúng ta không vượt qua bất cứ điều gì cùng với nó, nó sẽ chỉ làm cho trực tiếp vào HTML. Nhưng nếu chúng ta vượt qua trong liên kết này mảng các bài viết, mà là tự động kéo từ các cơ sở dữ liệu, chúng tôi có thể làm cho các trang năng động. Cool. Bất kỳ câu hỏi khác? SPEAKER 3: Làm thế nào bạn sẽ so sánh Laravel để có thể một số lựa chọn khác? ERIC Ouyang: Chắc chắn. Yeah. Vì vậy, Laravel is-- đó một question-- lớn một trong nhiều lựa chọn cho các khuôn khổ web. Vì vậy, Ruby on Rails là một trong đó là phổ biến. Tôi tin rằng Twitter đã từng là thực hiện với Ruby on Rails. Tôi nghĩ rằng họ đã kể từ khi chuyển sang. Có một số khác gọi là FuelPHP. Vì vậy, Ruby on Rails sử dụng ngôn ngữ Ruby và thực hiện rất nhiều các công cụ MVC mà chúng ta thấy ở đây. FuelPHP là một khuôn khổ PHP. Django là một trong những mục yêu thích của tôi. Đó là một khuôn khổ web cho Python. Vì vậy, bạn có thể viết ứng dụng web của bạn trong Python. Vì vậy, có một tấn các tùy chọn này. Laravel, tôi nghĩ rằng, bởi và lớn là đúng yêu thích của tôi bây giờ cho PHP chỉ vì của các thành phần mà chúng tôi nói chuyện về trước. Nó Composer kích hoạt. Nó bao gồm một thực sự, thực sự hệ thống ORM biểu cảm. Cũng có một khuôn mẫu thực sự tuyệt vời ngôn ngữ mà một số người khác chỉ không cung cấp. Và di cư. Cuộc di cư này tuyệt vời là tốt. Mát mẻ? Awesome. Vâng, cảm ơn rất nhiều cho xem buổi hội thảo này, và may mắn trên dự án cuối cùng của bạn.