成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Laravel 5 系列教程二:路由,視圖,控制器工作流程

awesome23 / 2159人閱讀

摘要:但是不用擔(dān)心,我們后續(xù)的教程會(huì)陸續(xù)講解相關(guān)的內(nèi)容。所以上面的路由注冊(cè)其實(shí)就是負(fù)責(zé)解決訪問(wèn)的時(shí)候的響應(yīng)。

原文來(lái)自:https://jellybool.com/post/programming-with-laravel-5-routers-views-controllers-workflow

免費(fèi)視頻教程地址 https://laravist.com/series/laravel-5-basic

上一篇教程我們走了那么長(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的。這里只是使用了artisanmake: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的RouterViews,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

相關(guān)文章

  • Laravel 5 系列入門教程)【最適合中國(guó)人的 Laravel 教程

    摘要:原文發(fā)表在我的個(gè)人網(wǎng)站系列入門教程二最適合中國(guó)人的教程本教程示例代碼見(jiàn)大家在任何地方卡住,最快捷的解決方式就是去看我的示例代碼。 原文發(fā)表在我的個(gè)人網(wǎng)站:Laravel 5 系列入門教程(二)【最適合中國(guó)人的 Laravel 教程】 本教程示例代碼見(jiàn):https://github.com/johnlui/Learn-Laravel-5 大家在任何地方卡住,最快捷...

    未東興 評(píng)論0 收藏0
  • Laravel 5系列教程五:MVC的基本流程

    摘要:原文來(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...

    mrcode 評(píng)論0 收藏0
  • Laravel 5系列教程十:實(shí)現(xiàn)文章的修改

    摘要:來(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...

    pf_miles 評(píng)論0 收藏0
  • Laravel 5 系列入門教程(三)【最適合中國(guó)人的 Laravel 教程

    摘要:原文發(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...

    xcold 評(píng)論0 收藏0
  • laravel5.5手寫教程3的基于資源路由的CURD操作(適合初學(xué)者)

    摘要:新增一篇新聞新增失敗輸入不符合要求請(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ì)建立...

    olle 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<