摘要:但是不用擔心,我們后續的教程會陸續講解相關的內容。所以上面的路由注冊其實就是負責解決訪問的時候的響應。
免費視頻教程地址 https://laravist.com/series/laravel-5-basic原文來自:https://jellybool.com/post/programming-with-laravel-5-routers-views-controllers-workflow
上一篇教程我們走了那么長的路,終于把Laravel安裝好了,這一篇教程我們就要進入Laravel的神奇世界了,主要是講解Laravel的Router,Views,Controllers的工作流程,目的也就是讓大家明白Laravel在處理一個get請求的時候是如何工作的。
在開始之前,我們首先得將我們的服務器啟動起來,如果你使用Laravel的artisan,你可以直接:
php artisan serve
然后訪localhost:8000,就可以看到Laravel了
我這里還是使用Homestead:
homestead up
homestead 啟動之后,我們就可以愉快開始寫代碼了。
Laravel 文件目錄然后訪問我們上一節設置好的域名:blog.dev,也可以看到我們的Laravel。如果你在安裝或者使用Homestead的時候遇到任何問題,都可以直接問我。
首先,對于一個新手來接觸Laravel的時候,可能你會對Laravel的文件目錄感覺到很困惑,因為實在是太多東西了,到底什么是Console,Events,Providers...一大堆東西在這里。
但是不用擔心,我們后續的教程會陸續講解相關的內容。
目前我們關心的是Http/這個文件夾,你可以就簡單地記憶為這個文件夾就是用來出來http請求的,比如我們在訪問blog.dev的時候,Laravel是怎么將那個可愛的頁面響應給我們的?這個就可以在app/Http/routes.php這個文件里面找到,就像上圖顯示的一樣:
Route::get("/", function () { return view("welcome"); });
這是什么意思呢?其實這里你可以這樣理解:我們注冊這樣一個路由,當用戶發送一個get請求(簡單理解就是在瀏覽器地址欄中訪問)的時候,什么樣的get請求呢?也就是什么樣的瀏覽地址呢?恩,就是網站的根目錄,也就是當一個用戶訪問我們站點的根目錄的時候,我們應該給用戶什么樣的響應呢?這里我們就直接執行一個函數function () {},這個函數里面就負責加載一個視圖return view("welcome");,這個試圖文件位于resources/views/welcome.blade.php,這里的試圖文件后綴名blade.php可能會比較疑惑,因為Laravel使用的是blade的模板引擎,如果你接觸過其他的模板引擎如Twig,Smarty等,對模板引擎的理解可能會清晰一點。但是如果你在這里還是不太明白,沒有關系,我后續會有專門的課程介紹blade模板。現在需要記住的是:Laravel的模板文件就是blade.php結尾的。
你可以直接打開resources/views/welcome.blade.php這個文件來看,里面其實就是一些HTML代碼,easy enough。
所以上面的路由注冊其實就是負責解決訪問blog.dev的時候的響應。那么我們來嘗試一個Hello World簡單的返回:
Route::get("/", function () { return "Hello World"; // return view("welcome"); });
回到瀏覽器,再次訪問blog.dev,我們就會看到上面寫的Hello World。
參數試著傳入參數,我們重新注冊一個路由:
Route::get("/", function () { return view("welcome"); }); Route::get("user/{name}", function ($name) { return "Hello ".$name; });
上面第二個就是我們自己重新注冊的路由,在路由中得變量用大括號{}包裹起來,然后在處理函數中接收這個參數,訪問http://blog.dev/user/guys,可以看到下面的返回結果。
上面這個時候,我們如果訪問http://blog.dev/user,這是報錯的,因為這個路由期望你在后面輸入一個變量$name,但是你并沒有,所以會報錯,我們可以通過可選參數來實現這個目的
可選參數:Route::get("user/{name?}", function ($name = null) { return "Hello ".$name; });
這個時候,再次訪問http://blog.dev/user就不會報錯了,但是貌似這個時候只返回了Hello,我們也可以設置一個默認值:
Route::get("user/{name?}", function ($name = "JellyBool") { return "Hello ".$name; });
這個時候,如果我們沒有輸入$name這個變量,我們會返回 Hello JellyBool
使用控制器上面注冊的這些路由是直接使用了匿名函數來返回字符串或加載視圖給我們,但是我們的控制器(controller)去哪里了呢?我們怎么使用控制器呢(controllers)?首先我們需要明白,在注冊路由是使用控制器在Laravel中大概是這樣寫的:
Route::get("/","ArticleController@index");
我們將routes.php中原來的注冊路由全部刪掉,只保留上面這一行代碼:這行代碼的意思是,當用戶請求我們的網站跟目錄的時候,我需要找到ArticleController并執行它的index方法,接下來,我們就需要創建我們的ArticleController了:
在命令行中執行:
php artisan make:controller ArticleController
上一篇文章說過artisan這個工具很強大,他可以用來生成我們在開發當中需要的很多東西,給我們的開發帶來了很多的便利,如果你花點時間慢慢適應一下,我敢肯定,你以后會愛上Laravel的,會愛上artisan的。這里只是使用了artisan得make:controller命令,其實artisan可以干的事情很多,我們在這個教程中會一一接觸到,如果你迫不及待,可以直接看官方文檔:
http://laravel.com/docs/5.1/artisan
上面的命令給我們在app/Http/Controllers/目錄下生成了ArticleController.php,我們打開它來看看:
在這個文件里面,Laravel幫我們生成了一堆的方法:index(),show(),create()...等,然后我們剛剛在Router(routes.php文件)中注冊的路由需要使用ArticleController的index方法,我們就在index()方法里面加載一個視圖:
public function index() { return view("articles.lists"); }創建視圖文件
這個視圖文件應該是位于resources/views/articles/lists.blade.php,但是在views文件夾當中,我們并沒有articles/這個文件夾和lists.blade.php,所以我們需要手動創建之。
這里需要注意的是,Laravel的view()方法會默認從views文件夾查找視圖文件,所以你不用在view()方法中加入resources/views這個路徑,而且你也不用將blade.php寫上,Laravel會自動處理這些事情,至于views()方法articles.lists中得.就使用了路徑別名,你也可以使用/來寫成這樣articles/lists
創建好之后,在articles/lists.blade.php寫入簡單地HTML代碼:
Article lists page 這是文章列表頁面
然后訪問blog.dev/,我們就可以看到上面的模板內容了:
到這里,不知道你對Laravel的Router,Views,Controllers這三個的工作流程有沒有一個清晰的認識,通常我們需要實現某個功能(或者說新創建一個頁面)都是這樣的:
1. 在routes.php中注冊路由 ---> 2. 創建對于的控制器 ---> 3. 在控制器中得對于方法加載視圖
對應得實際操作大概是這樣的:
1. Route::get("/","ArticleController@index"); 2. php artisan make:controller ArticleController 3. public function index() { return view("articles.lists"); }下一節
關于Laravel的Router,Views,Controllers的工作流程就大概講到這里,如果你有任何疑問,可以隨時在評論里面問我。然后下一節的內容會講以下的內容:
數據庫的配置和Laravel的Migration用法
將變量傳給視圖文件
blade模板的基本用法
最后:
Happy Hacking
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21080.html
摘要:原文發表在我的個人網站系列入門教程二最適合中國人的教程本教程示例代碼見大家在任何地方卡住,最快捷的解決方式就是去看我的示例代碼。 原文發表在我的個人網站:Laravel 5 系列入門教程(二)【最適合中國人的 Laravel 教程】 本教程示例代碼見:https://github.com/johnlui/Learn-Laravel-5 大家在任何地方卡住,最快捷...
摘要:原文來自免費視頻教程地址期間受到很多私事影響,終于還是要好好寫寫的教程了。我們來實現這個功能顯示文章詳情通過文章展示來快速體驗上面的流程注冊路由來到中,我們增加一個路由上面的路由指定我們需要加載中的方法。 原文來自: https://jellybool.com/post/programming-with-laravel-5-model-controller-view-basic-wor...
摘要:來看看具體的步驟注冊路由在中,注冊我們的編輯頁面的路由這個路由接受一個參數,意為文章的,我們會需要根據這個來查詢我們要修改的文章。然后渲染視圖,并將查詢到的和傳給視圖。下面我打算再開一個系列說說的新特性 原文來自https://laravist.com/article/20 免費視頻教程地址 https://laravist.com/series/laravel-5-basic La...
摘要:原文發表在我的個人網站系列入門教程三最適合中國人的教程本教程示例代碼見大家在任何地方卡住,最快捷的解決方式就是去看我的示例代碼。教程三代碼快照下一步系列入門教程四最適合中國人的教程完結 原文發表在我的個人網站:Laravel 5 系列入門教程(三)【最適合中國人的 Laravel 教程】 本教程示例代碼見:https://github.com/johnlui/Learn-L...
摘要:新增一篇新聞新增失敗輸入不符合要求請輸入標題請輸入內容新增文章上面代碼中的是為了防攻擊的,每個表單都必須存在。 本文我將結合簡單例子,完成laravel框架下的增刪改查,希望會對大家有所幫助。在進行之前,大家應該保證自己的數據庫鏈接無誤,artisan命令能正常使用,路由鏈接無問題。 一、創建控制器、路由避免影響其他路由,我們先注釋掉之前聯系時編寫的所有路由。因為上一章我們已經學會建立...
閱讀 2299·2021-09-30 09:47
閱讀 2218·2021-09-26 09:55
閱讀 2945·2021-09-24 10:27
閱讀 1539·2019-08-27 10:54
閱讀 966·2019-08-26 13:40
閱讀 2493·2019-08-26 13:24
閱讀 2418·2019-08-26 13:22
閱讀 1726·2019-08-23 18:38