>> [音樂播放]
>> ERIC歐陽：嘿，大家好。
歡迎。
這是構建動態 Web應用程序與Laravel。
我的名字是埃里克·歐陽。
我是一名大二的學生學習社會研究 在計算機科學的輔助，
我住在亞當斯 這裡的房子在哈佛。
>> 所以Laravel，其最核心的， 是一個MVC Web應用程序框架。
所以喜歡你們有 一直在做與CS50金融，
Laravel是一個框架，允許 你建立動態Web應用程序。
所以，你可以認為它在某種意義上 作為填充的類型的延伸
你一直在做CS50 財政部，而是一個系統的
很多更強大的，很多 在某種意義上更優雅，
並提供了大量的 為你的功能
建立相當複雜 Web應用程序。
所以，讓我們通過一些 的主要特點，
然後我們將深入到 例如建立一個博客的
應用程序Laravel。
>> 所以第一件事情之一是 從MVC類型的工作，它的區別
你一直在做與CS50 是它包括一個ORM引擎。
所以ORM代表對象 關係映射。
因此，這可以讓你打造 一個抽象層
數據庫之間 和你的控制器。
因此，在CS50財務不像的地方 您可以直接進行查詢，
ORM層可以讓你 抽象的路程，創造
模型是比更強大的 您可以直接用SQL查詢。
>> 另一件事是真的 樂於助人是可繼承模板。
所以，你會發現在CS50金融， 你最終改寫了很多東西，
其中，地方你可能 重複使用的東西，你不能夠。
所以，在這裡Laravel，你可以使用什麼 被稱為刀片模板引擎
創建一個總綱。
從那裡，你可以繼承 這樣子的模板其實可以
包括內的元素 這更大的基礎模板。
>> 遷移。
因此，這是一個相當標準的特點 大多數現代Web應用程序框架。
因此，這可以讓你代表 代碼數據庫模式的變化。
因此，沒有會說，phpMyAdmin的， 實際上你可以創建這些遷移
在那裡你代表數據庫 架構在代碼中直接改變。
這可以讓你to--特別是 如果你有多個工作的人
在同一個網絡application-- 跟踪這些變化，
說，在GitHub上，或者一些其他存儲庫。
>> 所以這是非常有幫助 並減輕需要
，比方說，通過身邊的很多SQL轉儲。
最後，作曲是 東西真的，真的有用
這使您可以使用其他 人的代碼做的真棒事情。
所以Laravel的結構如下 一些作曲家的包。
所以說，如果你想帶 在身份驗證程序包
或者，如果你想帶來一些 排序生成腳本或管理員的
接口，可以即插即用 這些組件與作曲。
>> 因此，讓我們開始吧。
你的任何問題 我們之前的傢伙開始了嗎？
沒問題嗎？
酷。
所以，第一步是 安裝作曲家。
所以作曲家可以讓你 管理這些依賴關係，
無論是在Laravel框架 或一些其它第三方延伸。
第一個命令允許 您下載作曲家，
第二個命令可以讓你 移動到你的本地bin文件夾
這樣您就可以運行作曲 直接通過端子。
>> 在此之後，繼續前進， 創建一個新的Laravel項目。
我們究竟要 使用一些示例代碼
我已經把 創建這個博客。
但如果你從開始 從頭開始，你可以使用這個命令
在這裡，作曲家創建項目， laravel斜線laravel，然後
你的項目的名稱。
而這將包括 所有的分銷代碼
用於啟動一個新的Laravel項目。
因此，對於你CS50最後的項目，你會 可能需要使用該命令。
>> 但是，我們要開始了。
所以，一旦你做到 這一點，你會得到
一個相當廣泛的數 在blog50文件。
因此，讓我們剛剛經歷 其中的一些組件。
你會發現，在這條線路 目錄中，有一個應用程序的文件夾。
裡面的應用程序文件夾中，有 一對夫婦有用的文件夾。
注意，開始與 是這樣的config文件夾。
所以這個設置是如何 你的web應用程序是
去，比方說，驗證人們或 現金事物或連接到數據庫。
>> 什麼是真正 樂於助人是Laravel
允許您設置不同 開發環境。
因此，我們在這裡所做的是，如果 我們走在了本地文件夾，
有一個為database.php文件。
你會發現在這裡，我們 建立一個MySQL連接的
允許個人連接 到MySQL服務器的
直接在CS50器具。
我們正在連接到數據庫 我成立了一個名為Blog50。
>> 因此，讓我們真正去前進， 運行的這個工作版本，
只是為了得到一個什麼樣的感 應用程序，我們正在建設
看起來像。
所以我有一個副本 這Blog50完成。
居然如此Laravel 已建成的一台服務器
您可以直接運行 在命令行。
因此，這是類似於 前PSET實際上，當你
打造C.你自己的服務器 因此，他們有一個內置的等
你可以運行你的應用程序Laravel 直接在命令行。
>> 因此，如果我們做的PHP工匠服務，這 將推出開發服務器
在端口8000。
因此，如果我們去本地主機 8000，你會發現，哎。
我們有我們的博客和運行。
所以Laravel這裡產生 我們的博客的頭版。
非常簡單的應用程序。
但有一對夫婦 真正漂亮的功能
它提供的罩的下方。
>> 因此，博客的應用程序的 簡單。
如果我們想創造一個帖子， 我們可以點擊該按鈕。
我們可以說，“嗨，大家好。
這是一個非常有趣的 研討會上，“例如。
寫下來的東西在這裡。
這裡文本。
如果我們點擊提交，你會 請注意，我們的新博客
交的已被添加到該 博客的頭版。
如果我們回到這裡，你會發現， 出現了一些評論已經
在博客上。
因此，如果我們向下滾動，你會 請注意，喬納森說譚
他是非常受這一職位感興趣。
>> 因此，我們將進入怎樣的對象 關係映射允許
你在做這些關係 一個相當無縫的方式為好。
酷。
有關功能的任何問題 什麼我們要打造？
酷。
因此，讓我們開始與實際 創建數據庫表。
>> 所以，記得在CS50金融，你 把一個表的用戶
以及用於 大盤在你的投資組合。
所以，正如我們前面所提到的， 我們Laravel用什麼
是一些被稱為遷移。
因此，如果我們回到 這裡分佈代碼，
這是第一個命令 樂於助人的Laravel為您提供
這是遷移命令。
所以，我們可以做的PHP工匠遷移：讓。
因此，這使我們能夠創建一個遷移。
>> 然後我們會想 創建一個遷移
所謂create_posts_table， 這是怎麼回事
我們將要在哪裡 可以存儲我們的博客帖子。
而且你會發現這裡運行 實際上是通過一些代碼，
生成與文件 在其上的時間標記。
因此，如果我們去看看數據庫， 在遷移，我們會發現
，它的創建 空白文件為我們這
有一個名為樣板代碼 我們規定，建立職位表。
>> 並且它具有在其兩個功能。
最多就是我們要運行時 遷移應用到數據庫。
上下就是我們要做的 當我們想要扭轉遷移。
所以在這裡，讓我們開始了 有寫這個遷移。
所以這是一個有益的類 在Laravel稱為模式。
>> 因此，我們要運行模式::創建。
我們要創建 表名為職位。
這裡使用的功能，我們應用此。
而在這裡，我們要真正 我們指定表的內容。
我們要創建一個ID， 這是自動遞增。
>> 此外，我們將 創建一個字段
代表我們的博客文章的標題。
我們也將創造一個字段 用於存儲我們的博客文章的文本。
最後，我們要 存放一些時間戳
創建我們的帖子的時候了 而且，當它被更新。
而對於下去，這是非常簡單的。
所有我們想要做的是降 我們已經創建了表。
>> 大。
有問題嗎？
所以現在，如果我們繼續 還有 - 實際上，本地主機，
讓我刪除我們前面了。
進入數據庫。
我要刪除我們前面了。
放棄這一創造 一個新的數據庫Blog50。
所以，現在是什麼神奇 部分在這裡，我們
可以直接應用這些遷移 使用命令行數據庫
工具。
因此，如果我們做的PHP工匠遷移， 你會發現，哎。
它的創建遷移表， 我們將看看在一個位，
和它的應用這個第一次遷移。
>> 所以我們看Blog50，你會發現 它的創建兩個表我們。
首先是這種遷移表。
因此，如果我們瀏覽，你會發現， 此表是相當簡單的。
它只是說，哎。
我們應用這個遷移。
我們回去看看帖子。
你會發現結構 這正是我們在問它。
我們有一個自動遞增的ID。
我們有一個字符串，用於存儲 標題和文本字段
用於存儲的內容。
大。
酷。
有關遷移的任何問題 工作中，我們如何應用它們？
不是嗎？
酷。
所以，現在我們要繼續前進 實際上創建模型。
因此，我們要創建一個職位模型 存儲在數據庫的抽象。
因此，而不是做的MySQL查詢 直接，我們要創建。
因此，我們必須創建一個 夾在這裡所說的模型。
而在這裡裡面，我們要 創建一個名為post.php中的文件。
>> 在這個PHP文件， 我們要創建
一類崗位延伸侃侃而談。
口才是ORM的名字 引擎，Laravel提供。
而在這裡，我們可以預期， 你真正需要編寫一些代碼。
我們要去寫一些 輔助功能後。
但開箱，這將已經 認識到什麼是數據庫
我們可以訪問，說，文本 ，我們的博客文章或標題
並直接與創造的東西 幾乎沒有任何代碼。
>> 這就是神奇的組成部分之一。
風一旦該類 更完全成熟，
我們將包括有關的信息是什麼 它的相關，所以註釋。
還創建一個函數 所以我們實際上可以
直接獲取URL 博客文章頁面。
酷。
關於什麼問題嗎？
第
酷。
>> 所以現在一旦我們有我們的模型，我們 要創建一個控制器的
能夠與這些模型的接口， 隨後該數據庫。
因此，如果我們看一看 BlogController，你會
注意到，有沒有 很多現在在這裡。
所有有一個索引功能 生成首頁，
但沒有任何東西 有顯示呢。
>> 所以第一功能 我們要創建
是一個可以讓我們 創建一個博客帖子。
所以，我們要聲明 新的函數調用newPost。
和裡面這裡簡單，我們要去 設置此頁面的佈局
要渲染的版本， 如果從CS50還記得，
該模板被稱為blog.new，哪 我們要創造一點點。
>> 你會發現這裡六號線的 我們指定這個變量，佈局。
如果我們看一看 在瀏覽文件夾，
有一種版式文件夾，裡面 包括一個非常基本的HTML文件。
值得注意的同時，你會發現 我們有這個容器
在這裡，產生的內容。
所以，我們的模板裡面 我們將做什麼
正在創造什麼將是 這種佈局內直接取代。
>> 因此，我們說，我們要呈現 所謂的模板blog.new。
但博客裡面，有 沒有這種新的模板。
因此，我們要創建一個 所謂的文件new.blade.php。
這告訴Laravel了 這個PHP文件應該
將與所繪製的 刀模板引擎。
因此，這是一個相當 簡單的文件。
這將是由形式 我們實際上添加的博客文章。
>> 所以，這裡的魔法從 繼承是，哎。
我們要指定 部分，所述內容部分
在這裡，這是劃定 通過@section和@stop。
那麼，什麼是介於兩者之間這裡將 代入的總體佈局。
在這裡，我們想要做的是 很簡單的創建一個新的HTML文件。
讓我們只需添加一個快速稱號。
添加一個博客帖子。
並在其中，我們 要創建一個表單。
>> 這種形式將會有一個動作。
這將是什麼 我們後來的替代，
我們將看到如何 路由適合這裡。
但我們只是要確定現在 這去的URL與路線
從createPost。
然後這將 有方法後。
在這裡，我們要 有兩個字段。
DIV CLASS =“形組”。
>> 我們使用的引導CSS庫 由Twitter提供的慷慨。
因此，我們要創建兩個這樣的。
所以這第一個輸入 將是標題。
因此，輸入名稱=“​​稱號”。
類=“formcontrol”。
類型=“文本”。
我要添加一個佔位符=“標題”。
>> 然後，第二個是 將是一個文本區域。
NAME =“內容”。
類=“formcontrol”。
和佔位符=“寫到這裡”。
在那裡，我們走了。
最後，我們要 添加快速提交按鈕。
類型=“提交”級=“BTN BTN-小學”。
所以這些都是 引導的功能，所以
這可敷設 出的方式，是
獵物的用戶， 而不是赤裸裸的HTML。
>> 所以，我們在這裡所定義的控制器。
我們定義了一個非常簡單的看法。
但缺少的是 結締組織。
所以在這一點上， Laravel不知道如何
我們要以實際 訪問該控制器。
因此，這是在一個確定的 所謂的文件routes.php。
而現在，我們有一個路線。
這是當我們去 家路徑這個網站，
它會呈現 該指數控制器。
所以在這裡我們需要做的是落實 我們的一個新的途徑創造一個職位。
>> 因此，我們使用這種方法 得到的，其中規定
當用戶嘗試該 得到這個page--專
後斜線新page-- 我們將做什麼
是使用名為控制器 BlogController新的崗位。
我們剛剛創建的。
然後我們要去 別名它作為newPost。
我們將創造另一個 功能一點點。
但是，什麼是在這裡下 關鍵“為”是什麼
我們可以在替代 我們的刀片模板。
所以現在，讓我們 居然還說路線。
因此，我們也將 創建一個控制器
這樣我們就可以創建這些職位。
所以，如果一個用戶帖子的網頁後 新的削減，我們要做的
是使用一個控制器 我們將在短期內創造
所謂BlogController在createPost。
我們要去的別名 這與作為createPost。
酷。
>> 有問題嗎？
酷。
因此，讓我們運行我們所擁有的這麼遠。
因此，如果我們做的PHP工匠服務， 我們會看到很多的錯誤。
所以看起來我們有一個 航線語法錯誤行27。
啊。
缺少一個分號。
因此，如果我們去到8000， 你會看到什麼在這裡呢。
因此，這是默認的主頁。
>> 但是，如果我們去張貼大幅削減新的，嘿嘿。
這將是我們剛剛創建的窗體。
現在，我們還沒有 實現的功能
當我們按下的提交按鈕。
因此，如果我們點擊提交 按鈕，它會運行一個錯誤。
但是，我們將代碼 現在，正是我們
想要做的，當用戶 提交此表。
>> 因此，讓我們做到這一點。
回到控制器文件。
我們現在要做的是 實施這一新功能
這使我們能夠創建一個職位。
申報新功能。
公共職能createPost。
並且這個功能將是一個 點點比更複雜的是什麼
我們以前有。
但是你會看到這裡，我們是不是 要真正寫任何SQL。
在ORM，雄辯 ORM，會允許
我們為此在一些 如何更優雅的方式。
>> 因此，我們要創建一個新的職位。
在這裡，我們 實例化一個新的對象
從模型，我們只是 創建後的模型。
而我們要做的是什麼設置 這種使用的東西的title屬性
我們從服務器獲取。
因此，這是類似於 我們在CS50財務以前有
我們會做，使用超級 全球郵政尋找稱號。
>> 所以Laravel提供了一些衛生 和諸如此類的東西使用這個輔助功能。
因此，我們更願意用這個來代替 從PHP這個非常基本的原始形式。
然後我們要做什麼設置 它的輸入內容獲取內容。
我們究竟要包裝 這一個有用的功能
在PHP提供了一種稱為nl2br，這 打開新的生產線，NLS，成BRS，休息，
所以我們實際上可以有 在它的不同段落。
最後我們要去 要做的就是保存這個職位。
因此，我們調用函數 保存該模型。
我們要保存的職位。
最後我們要做的 具體重定向用戶
這是我們要去的路線 通過viewPost創建不久，別名。
而且我們要傳遞的參數 ID，是這一新職位的ID。
>> 大。
所以現在，如果我們真的去並運行此。
我們將增加一個新的崗位。
比方說，這是研討會50。
並說，一定。
ASDL。
隨你。
某種形式的內容。
並提交。
我們會發現， 哎。路線不限定。
但是，如果我們看看phpMyAdmin的，並 看看我們是否不起作用
做了什麼事情。
看Blog50崗位。
我們會發現，哎。
事實上，我們也剛剛創建的博客 按規定帶有時間戳發布。
>> 所以，現在，讓我們回過頭來實際創建 在我們這個控制器等功能，
特別是viewPost控制器。
所以，公共職能viewPost。
所以在這裡我們會做的，而不是 有空括號，
我們要傳遞的ID 我們所創造的崗位。
從這裡，我們打算怎麼做 實際上是在數據庫中查詢它。
>> 所以，如果我們不發布， 有一個調用的函數
發現允許我們通過ID進行查詢。
具體來說，其實，我們要 使用這種替代版本，稱為
查找或失敗，這使我們 退出了這一功能，
引發異常如果ID 我們通過在不存在。
然後我們要做的事 類似於我們以前所做的那樣
在這裡我們設置內容 這個頁的要
這一新觀點的渲染的版本 我們要去創造，blog.view。
>> 而且我們要傳遞到 它 - 就像在CS50渲染
function--變量的字典。
這個關聯數組的鍵 成為模板內的變量。
所以，我們要交的崗位做。
所以通過間接的職位， 我們已經從數據庫中查詢。 。
現在我們要去 要做的就是創建這個視圖
所以我們實際上可以查看 我們已經建立了博客文章。
>> 因此，我們要創建一個 所謂的文件view.blade.php。
所以該模板的內部， 我們將做什麼
是把一個簡單的頁面 允許我們顯示內容。
所以我們做一節，這是內容之前。
停止。
而我們要去 在做的，是
寫一些HTML顯示此頁面。
>> 所以，我們要以一個奇特的把它包 新的HTML5元素稱為條。
而在這裡，我們要 有一個頭，其中
我們將簡單地擁有H1， 其中包括文章標題。
所以在這裡，如果我們看看這個 雙大括號標記，
這將基本上做 PHP呼應文章標題。
所以這是一個有用的速記 這Laravel為我們提供。
因此，我們將使用 這個符號代替。
>> 在這裡，我們要還 打印出來的內容。
而在這裡，我們要 做帖子內容。
上下底部我們是 要做的是創建一個頁腳。
而在頁腳，我們要 當這種被張貼第一個顯示。
因此，這是張貼在，在創建的。
>> 和Laravel使用一個非常好的 最新的庫稱為碳。
所以我們實際上可以做一些所謂的 difforHumans，你剛才看到的。
當我們發布。它會說， 像，五秒前。
所以這是一個非常好的 Laravel功能。
最後，我們要 關閉此頁腳。
>> 所以現在，如果我們回去 首頁我們要去
看到這裡沒有什麼，因為沒有 我們還沒有編碼了主頁。
但是，如果我們去後斜線之一， 我們將看到一個例外。
有誰知道為什麼 我們看到一個例外？
我們有什麼缺失？
任何想法？
所以，我們做了什麼 早些時候，我們實際上
定義我們如何獲得 特別是控制器？
>> SPEAKER 1：路由？
ERIC歐陽：是的。
所以，我們還是要確定路線。
所以，我們回去這裡routes.php。
你會發現，我們 實際上沒有定義
我們如何會得到 到該控制器。
所以，現在我們要確定這條路線。
這是相當簡單的， 類似於我們以前所做的那樣。
但是，我們要怎麼在這裡注意的是 那我們將有一個佔位符。
>> 因此，如果我們做route.get斜線後ID。
所以ID現在是什麼事情 被傳遞到控制器。
這將要使用的 控制器，我們只是
創建BlogController在viewPost。
我們要去 別名這是viewPost。
大。
所以，現在我們要創建這條路線。
>> 所以現在，如果我們去這裡 並刷新該頁面，
我們其實也有我們新的博客文章。
所以，這就是我們前面創建。
很簡單的頁面，但顯示 我們剛剛創建的博客文章。
酷。
如果我們確實經歷了整個 創建一個新的博客文章的過程中，
我們會發現，一切 重定向正常。
如果我說：“你好。
我喬納森譚“。
說，“這是我的博客文章。”
並提交，這將創造 這種新的博客文章ID為2，
該增量從我們不得不 此前，它正確地顯示。
真棒。
>> 有問題嗎？
是嗎？
>> SPEAKER 2：是否Laravel手柄 消毒，並為你的一切？
ERIC歐陽：是的。
所以，當我們在前面看到的時候 我們做了結腸輸入冒號得到，
這sanitates任何SQL 注射和諸如此類的東西
我們可能想，如果執行 我們的網站的惡意用戶。
所以Laravel處理大量 那幕後。
好問題。
>> 因此，讓我們來看看主頁。
因此，如果我們先回去了 控制器的主頁，
你會發現，它 沒有做太多在這裡。
你會發現，我們不 通過這個控制器
什麼特別有幫助。
這只是該索引文件。
>> 因此，讓我們通入 這個東西有用。
具體而言，我們 要通過職位。
和Laravel讓我們 做一切後，這
讓我們把所有的帖子。
現在，如果我們回去 index.php文件，你會看到，嘿嘿。
這裡沒有什麼呢。
但是我們想在這裡做 實際上遍歷，
做一個foreach循環在帖子說 讓我們打印出的職位。
>> 所以的foreach職位 後期，我們想要做的
被打印出來的內容 的博客文章。
但有一件事，你會注意到的是， 我們實際上寫的大部分代碼
已經在view.blade.php。
還等什麼，我們要真正做的是 使用刀片的一個不錯的有用的功能
並分解出這個共同的代碼。
所以，我們去這裡。
>> 我們要利用這個內容 在這裡，我們打算怎麼做
是創建一個新的文件夾。
讓我們只是把它諧音。
而在這裡，我們要 創建post.blade.php。
所以在這裡，我們分解出來的方式 這是我們要顯示這些職位。
在這裡，我們會做的，而不是 居然直接具有HTML，
我們將使用這個指令 所謂包括blog.partials.post。
>> 以及我們打算在這裡做 是通過在頁面中的職務。
所以現在，如果我們回到這裡，我們將 注意到該功能仍然
相同。
但是，現在我們有這個 提取出來的代碼，這個HTML。
所以我們可以在指數使用它。
所以在這裡，這是非常簡單的。
我們所要做的是包括 blog.partials.post和陣列。
和某處 之前，我們做崗位職務。
>> 所以現在，如果我們回去 主頁，我們將看到，嘿嘿。
我們有所有的列表 博客文章說，我們有過的。
我們可能需要一些“如果”加 條件和“其他”條件
這樣，如果我們沒有 在博客上什麼，
我們要顯示什麼幫助。
喜歡，嘿嘿。
有沒有在博客上還沒有的內容。
如果你們確實看 在GitHub上的分佈代碼，
你會看到我們是如何做到這一點的例子。
>> 酷。
有問題嗎？
是。
>> SPEAKER 2：我想剛才 一個根本的問題。
回路線。
ERIC歐陽：是的。
如果我們看一看路線。
>> 揚聲器2：在什麼地方 uses.blogcontroller在創建後，
是什麼指導我們？
ERIC歐陽：是的。
是啊。
>> SPEAKER 2：或者是什麼that--
ERIC歐陽：那麼，看一看，說 例如，這條路就在這裡。
第一部分是實際的 URL，用戶會去。
這陣在這裡， 關聯數組，定義
我們要如何有 針對它的應用程序的行為。
因此，採用的是控制器， 該功能我們
想打電話時， 用戶進入該URL。
所以viewPost這裡是一個 我們內部定義的函數
BlogController--的
>> SPEAKER 2：我明白了。
>> ERIC歐陽： - 因此，我們 其實可以渲染視圖，
進行一些計算， 與SQL數據庫交互。
>> 揚聲器2：確定。
>> ERIC歐陽：然後其他 一部分“，因為”這是我們使用的別名。
因此，如果我們注意到，當 我們創建的形式，
你會發現，URL :: routecreatePost。
因此，它可以代替實際 URL，這樣我們就不難
在這些編碼，所以我們可以改變它 一次，說如果我們想重新命名。
相反，後斜線 新的，我們想要做的像，P
新的削減只是為了清理 我們的網址了一下。
我們將改變它在一個地方，而 比在所有不同的文件。
>> 酷。
非常好。
所以，現在我們有一個非常 基本的博客平台。
我們可能要添加一個按鈕， 我們實際上可以創造新的職位。
因此，如果我們看一看 在佈局法師，
我們有一個叫做頭右側部分 我們剛剛定義了在頂部。
因此，我們可以添加按鈕 頭的頂部。
>> 因此，如果我們去index.blade.php，實際上 做的是確定發生的事情在這裡裡面。
因此，這頭右側部分， 我們將做什麼
被添加的按鈕進入 由航路新崗位定義的URL。
只是把它清理乾淨，使 它漂亮，所有的引導，
我們要作 這是一個默認的按鈕。
讓我們只是讓大的樂趣。
>> 和裡面，我們可以把一些文字。
但是，自舉 提供的是glyphicons。
所以，我們實際上可以添加在 我們前面看到的漂亮的鉛筆。
Glyphicon。
Glyphicon鉛筆。
因此，這將使我們能夠把 在圖標代替文本。
現在，如果我們不停止，這 將定義此節。
而且，嘿嘿。
我們有一個很好的按鈕鏈接我們 直接添加一個博客文章頁面。
>> 因此，我們有一個非常簡單的博客。
我們可以添加的東西給它。
但是，我們普遍預期 從博客的評論。
所以這是非常重要的，我們有， 說，如果別人訪問網站
真正喜歡的職位， 就可以搞的討論
與其他人誰訪問的頁面。
所以我們要去創造一個 新的數據庫表和新模式
這樣我們就可以聯想 與崗位評論。
>> 因此，第一個步驟，就像之前， 是，我們需要運行遷移。
所以，像以前一樣，我們做 PHP的工匠遷移：製作。
而且我們要創建一個 所謂create_comments_table。
這將創建一個文件 有我們的新移民。
我們要去，像 之前，定義一個新表。
因此，架構::創建 表稱為意見。
此功能在這裡。
而這個表裡面是什麼 我們要做的首先，
像以前一樣，分配一個ID。
遞增ID。
>> 我們將允許用戶關聯 他們的名字與一個特定的註釋。
我們將有一些內容 隨著此，文本內容的推移。
在這裡，我們要去 做的是不同的東西。
我們要創建一個整數 這就是所謂的post_id其中
是要表示什麼交 一個特別的評論與去。
>> 此外，我們究竟要 設置這樣的外鍵約束。
所以MySQL將強制執行。
我們不是要 分配數量評論
5發布5000如果我們不 有5000個職位就可以了。
所以我們在這裡做的， 我們做外貿的post_id
將要與相關聯 從表中的帖子ID字段。
我們會做一些事情 別人有幫助的，是onDelete。
>> 如果我們刪除一些使 從數據庫後，
我們要級聯 刪除徵求意見為好。
因為它不是非常有幫助 我們要對帖子評論
不存在。
最後，像以前一樣，我們 打算在這個設定的時間戳記。
和以前一樣，我們要 有相反的遷移是
丟棄的意見表。
>> 所以現在，如果我們回去 在這裡，我們要
運行此遷移，遷移工匠。
現在它的應用這個 我們剛剛創建的遷移。
因此，如果我們看看phpMyAdmin的， 我們這樣做，事實上，現在
有意見表，該表有 我們剛才指定的結構。
所以，像以前一樣，我們 要創建一個新模式
抽象的SQL表 我們剛剛創建的。
>> 因此，讓我們添加一個新的文件。
我們打算把它comment.php。
這實際上是將是相當 直截了當有輕微的變化
從我們面前了。
因此類註釋擴展侃侃而談。
而我們要去 在這裡做的就是定義
一個函數，它是 與其它車型的關係。
因此，我們將有一個職位功能 在這裡，返回此關係。
所以我們指定 這屬於發布，
說是有一個職位 這個評論是屬於。
>> 這實際上已經是 資本P表示該模型。
現在只是在其他翻蓋 方面，我們不得不說，哎。
帖子有意見。
所以，我們要做的是什麼 界定公共職能的意見。
這裡返回 這有很多評論。
所以，現在神奇，當我們有一個帖子， 我們可以得到的屬性評論
它會用它填充 從數據庫中的信息。
>> 因此，讓我們其實經歷和 添加一個新功能，我們認為文件
這樣我們既可以顯示 創造意見。
所以，我們要定義一個新的部分。
就讓我們分開吧 一個水平線。
第ID =“意見”。
我們現在要做的 這裡，像以前一樣，
遍歷所有的評論。
所以實際上我們如何做到這一點， 正如我所說，相當神奇。
>> 我們發表評論。
然後我們就可以做到這一點對每個 遍歷各的意見。
什麼我們要 做的是DIV類註釋，
而且我們要實際 打印此評論。
使顯示哎， 評論名稱 - 人
誰張貼了這個comment-- 說，點點點。
我們打算把這個塊 報價，只是為了使它看起來不錯。
然後評論內容塊的報價。
和foreach。
所以，現在這是怎麼回事循環 通過所有的評論
該關聯 與每個職位
並顯示每個這些意見。
我要下來再添一節 在這裡，這使我們能夠添加註釋。
因此H3類。
把標題在這裡。
添加評論。
而且我們要定義一個新形式。
>> 所以，像以前一樣，我們 要做到形式的行動。
在這裡，新的動作我們 要定義一個新的控制器，其
使我們能夠應對發布 要求創建意見。
所以，URL ::路線createComment。
我要傳遞的參數在這裡。
帖子的ID是 我們正在創建的註釋。
與此則方法 形式將是後期。
>> 現在，我們要加入 一兩個字段，表格組。
這將是一個輸入與 命名“名”和class =“表單控制”
類型=“文本”，並且與 佔位符=“你的名字。”
我們也將確定 另一種形式的領域，這
將是一個文本 板塊，我們以前有。
就像之前，把它的內容。
類=“的形式控制。”
佔位符=“寫在這裡。”
>> 而只是讓我們 實際上可以提交，
提交類型和類=“BTN BTN-小學”。
關閉窗體。
關閉這個動作。
所以，現在如果我們刷新這個頁面， 我們有，比如說，某一職位。
我們必須重新啟動服務器。
PHP工匠服務。
重新啟動了。
我們必須定義的路由。
但現在，就讓我們藉此 出來，讓我們實際上可以告訴你
什麼樣的頁面的樣子，然後 我們實際上創建路線。
所以，嘿嘿。
我們有這種新形式這兒 這樣我們就可以創建註釋。
因此，讓我們真正定義 在控制器內的功能
這樣我們就可以添加註釋。
讓我們回去。
並在blogcontroller.php， 我們將做什麼
正在創建一個新的功能， 所謂創建註釋。
>> 公共職能createComment。
這將有一個單一的 參數，該帖子的ID
我們正在評論。
和以前一樣，我們 要首先獲得該職位。
所以發帖，findOrfail ID。
隨後，我們將 創建一個新的註釋。
因此，評論=新評論。
評論名稱=輸入::拿到的名字。
評論內容=相同的新行 到輸入的休息::獲取內容。
>> 最後，我們將不得不 此評論與崗位相關聯。
因此，我們將使用 此功能，評論，
這使我們能夠拯救 這種關係。
所以，現在這條評論將有 自動後ID。
我們也可以將其設置 手動，但這是
更容易盡量閱讀 作為函數的推移。
我們執行後， 這，就是我們想要做的
是將用戶重定向到該 通過viewPost指定路線
與該數組 帖子ID參數。
>> 現在讓這其實 功能，我們需要定義這條路線。
路線::崗位。
現在我們要調用這個 後斜線ID斜線註釋。
陣列使用了新的功能 我們剛剛創建的。
BlogController。
CreateComment為createComment。
大。
>> 所以，現在有希望，如果我們刷新這個頁面 並添加註釋，比如，大衛·馬蘭。
“希望這個工程。”
提交。
我們呢，其實，有一個 在這個博客上發表評論。
酷。
所以，現在我們有一個相當 功能的博客文章。
我們只是要 添加幾個這樣的調整
我們有一些比較有用 在這些職位信息。
>> 因此，如果我們回到 頭版，我們有沒有意義
有多少評論是 在這些職位。
所以我們實際上是將 做的是，我們的模型裡面，
定義一個輔助功能，可以讓 我們指定的評論的數量
是去一個特定的職位。
因此，我們要創建 一個輔助功能。
>> 公共職能。
GetNumCommentsStr。
因此，一個字符串，指定數量 的評論指出，與它一起去。
而我們要做的是說， 這NUM =對此有何評論數。
所以，我們要算 評論的數量。
如果這個數字等於1，我們 只是要回1條評論。
再不然，我們要返回 NUM和評論的串聯，
所以我們得到的多元化是正確的。
只是讓這一個單引號。
一個評論。
>> 現在我們可以使用這個功能 直接在我們的觀點。
因此，如果我們回到 我們創建了部分職位，
現在我們要真正 顯示的評論的數量。
所以我們所能做的就是 後，使用此功能
我們剛剛創建 顯示的評論的數量。
所以，如果我們現在刷新，它 確實，實際上，顯示
數量評論 與它一起去。
>> 如果我們想成為看中，如果你 其實看一下分佈代碼，
我們實際上可以鏈接 這評論。
如果你還記得，我們​​在定義 查看這有部分ID的意見。
因此，如果我們真正想要的鏈接 直接向評論部分，有什麼
我們這裡做的是A HREF 路線viewPost的URL。
通過在後ID陣列ID。
然後我們要去 特別是評論部分。
>> 在這裡，讓我們關閉的標記。
所以，現在如果我們刷新這個 頁面，我們點擊這個。
我們將直接進入 評論部分。
如果我們有一個較長的帖子，你可以 其實看到這個反彈下來。
但你會發現，它的 未在頁面的頂部。
酷。
大。
所以這是一個相當簡單的 例如簡單的東西
你可以使用Laravel做。
>> 但你可以在這裡看到， 我們已經做了很多的事情
與代碼非常少量。
Laravel使我們能夠做的 幕後SQL查詢。
它的衛生 我們在幕後。
使我們能夠做這些關係 很容易，而不需要我們
做任何SQL語句加入到 結合註釋什麼職位。
使我們能夠做到這一點 模板繼承
這樣我們就可以定義這些嵌套 文件，所以我們不會重複自己，
當我們有這樣就像 的博客文章顯示
我們不必 複製和粘貼代碼。
>> 從這裡，你可以建立 日益複雜的應用程序。
你可以想像，如果我們 要實現登錄，
我們可以說，引入第三方 框架，使我們能夠做到這一點。
有一群人 這是真的，真的
大，可以這樣做， 密碼恢復。
它會送你一個 重置密碼的電子郵件。
我們可以實現權限 這樣我可以創造一個帖子，
但別人不能編輯它。
我們可以實現 功能刪帖。
>> 但你可以在這裡看到，我們有相當 多所有的基本組成部分
建立一些真的，真的， 充滿活力和令人激動的網絡應用程序。
因此，與這一點，我認為我們是很好的。
難道你們有什麼問題嗎？
是嗎？
>> 揚聲器3：你怎麼了 獲得靜態內容？
>> ERIC歐陽：靜態內容。
所以，你在這之前看到的，當我們有 這裡這個權利，這個佈局的內容，
鑑於時許，我們有這個 沒有這個數組之後。
Blog.index，我們有這個 如剛剛靜態文件。
因此，如果我們不通過 沿途任何東西，
它會只需要直接渲染HTML。
但是，如果我們通過這個關聯 陣列的職位，這是動態
從數據庫中抽取，我們 可以使頁面動態。
酷。
還有沒有其他問題？
揚聲器3：你會如何比較 Laravel來也許一些其他的選擇嗎？
ERIC歐陽：當然。
是啊。
所以Laravel is--這 一個偉大的question--
一個多種選擇web框架。
因此，Ruby on Rails是一個流行的。
我相信Twitter的使​​用是 使用Ruby on Rails的實施。
我認為他們已經從切換。
還有另外一個叫FuelPHP。
>> 因此，Ruby on Rails的使用Ruby語言 並實現了大量的MVC的東西
我們在這裡看到。
FuelPHP是另一種PHP框架。
Django是我的最愛之一。
這是一個Web框架為Python。
所以，你可以用Python語言編寫的Web應用程序。
因此，有一噸的這些選項。
>> Laravel，我認為，通過與 大的是我最喜歡的右
現在PHP只是因為 各組分的
我們前面談到。
它的作曲啟用。
它包括一個真的，真的 表現ORM系統。
也有真正真棒模板 語言，一些其他
只是不提供。
和遷移。
遷移是真棒為好。
很酷吧？
真棒。
好了，非常感謝 看著這個研討會上，
和好運氣在你最終的項目。