[音樂播放] 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系統。 也有真正真棒模板 語言,一些其他 只是不提供。 和遷移。 遷移是真棒為好。 很酷吧? 真棒。 好了,非常感謝 看著這個研討會上, 和好運氣在你最終的項目。