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