摘要:一路由目錄眾所周知,對于我們熟知的任何一款框架,例如路由系統(tǒng)都是極其重要的存在。文件用于定義界面的路由。定義在中的路由都是無狀態(tài)的,并且被分配了中間件組。生成的控制器為每個行為保留了方法,同時還包括了處理動作和的聲明注釋。
一、路由目錄
眾所周知,對于我們熟知的任何一款PHP框架,例如TP、CI、YII、路由系統(tǒng)都是極其重要的存在。 對于laravel框架也一樣,對于數(shù)據(jù)庫的操作,無非就是增刪改查,只不過框架不同,語法不同, 所以掌握laravel框架的路由系統(tǒng)對于我們掌握該框架有著至關(guān)重要的作用。 我們知道對于LARAVEL框架以前的版本,路由都是寫在app里的,現(xiàn)在的laravel框架路由存在在Routes目錄下,如下圖所示:
所有的 Laravel 路由都在 routes 目錄中的路由文件中定義,這些文件都由框架自動加載。 routes/web.php 文件用于定義 web 界面的路由。 這里面的路由都會被分配給 web 中間件組,它提供了會話狀態(tài)和 CSRF 保護(hù)等功能。 定義在 routes/api.php 中的路由都是無狀態(tài)的,并且被分配了 api 中間件組。 我們先來熟悉一下HTTP訪問的幾種方法: 1. Get方法:常用的方法,略; 2. Post方法:常用的方法,略; 3. Head方法:與get方法類似,主要是為了獲取某個訪問的頭部信息, 服務(wù)器不返回請求內(nèi)容; 4. PUT方法:請求往服務(wù)器上存文件; 5. DELETE方法:請求刪除服務(wù)器上的文件; 6. TRACE方法:就是獲取服務(wù)器收到的來自客戶端的請求信息(收發(fā)調(diào)試), 一般用于調(diào)試服務(wù)器; 7. Connect方法:把服務(wù)器作為跳板,讓服務(wù)器代替用戶去訪問其它網(wǎng)頁, 之后把數(shù)據(jù)原原本本的返回給用戶; 8. Options方法:獲取服務(wù)器URI所支持的方法,或用于檢查服務(wù)器的性能, ajax進(jìn)行跨域訪問時,先發(fā)送options方法來判斷請求是否安全。
二、熟悉路由
我們先寫幾個簡單的路由來認(rèn)識一下Laravel下的路由路徑。 在開始練習(xí)之前,我們先關(guān)閉routes/web.php 下的下面兩行auth相關(guān)代碼,避免影響練習(xí)測試。 //Auth::routes(); //Route::get("/home", "HomeController@index")->name("home");
此刻我們訪問127.0.01:9999/news時,顯示的應(yīng)該是NEWS字樣。 接下來我們來給數(shù)據(jù)表中填充十組數(shù)據(jù),然后建立Model類以及控制器,通過路由來訪問這些數(shù)據(jù)。(這里就不通過laravel自帶的 seed 填充了,有興趣的朋友可以自行查詢怎么填充模擬數(shù)據(jù).關(guān)鍵字"laravel seeder")。表結(jié)構(gòu)如下圖所示
使用artisan命令建立Model類,打開cmd 切換到項目根目錄,輸入php artisan make:model News 得到如下圖所示
打開app/News.php 文件,由于laravel默認(rèn)Model類對應(yīng)的表名為類名加s,既對應(yīng)的表應(yīng)該是newss,我們在文件中加入protected $table = "News",指定該model類對應(yīng)表news。 我們再使用artisan建立控制器. php artisan make:controller IndexController 成功之后,打開app/Http/Controllers/IndexController.php ,測試成功。
加入路由
測試成功
至此說明我們已經(jīng)可以通過路由訪問通控制器, 接下來我們來使用Eloquent ORM 來調(diào)取數(shù)據(jù)庫數(shù)據(jù)。
如上圖,需要在文件頭部引入對應(yīng)Model類
use AppNews ,然后 在方法Index里調(diào)用News::all() Eloquent方法,然后展示出數(shù)組模式,toArray();
除此之外,我們還可以使用DB類的靜態(tài)方法來和數(shù)據(jù)庫進(jìn)行交互。 toArray()); $news = DB::table("news")->get(); var_dump($news); } }
以上只是數(shù)據(jù)庫最簡單的展示方法,具體的增刪改查我們會在下節(jié)教程繼續(xù)學(xué)習(xí),現(xiàn)在我們再回過頭來,看看路由的幾種規(guī)則。
1、路由的match、any方法
/*
match方法是laravel自己封裝好的,同樣它的意思是匹配
*/
Route::match(["get,post],"admin/login",function(){ return "login"; });
/*
在這里呢我們可以用match這個方法去匹配兩種請求方式,這樣是不是減少了代碼量呢
*/
我們還有第二種方法,
/*
GET,POST,PUT,DELETE.. 任何方法訪問 www.itbool.com/Admin/login, 都用第2個參數(shù)中的匿名函數(shù)去響應(yīng)所有HTTP動作 .
*/
Route::any("Admin/login",function(){ return "hello world"; });
2、路由傳參
Laravel的路由傳參參數(shù)必須使用花括號來包裹并且是拼音字母例如使用{id}表示$id參數(shù),具體示例如下圖所示:
3、路由正則約束
即當(dāng)我們要驗證一些字段的時候,在laravel中,我們可以直接在路由中作出限制。
普通形式
->where("要限制的參數(shù)名","限制規(guī)則(正則,不用斜線//)");
數(shù)組形式
->where(["要限制的參數(shù)名1"=>"限制規(guī)則1(正則,不用斜線//)","要限制的參數(shù)名2"=>"限制規(guī)則2(正則,不用斜線//)"]);
如下圖所示:
4、資源路由
例如:我們先用artisan命令,生成一個控制器:
php artisan make:controller PhotoController --resource
(artisan命令還有很多,可以極大地提高我們的開發(fā)速度)
接下來為這個控制器注冊一個資源路由:
Route::resource("photo","PhotoController");
此時打開cmd命令行 輸入php artisan route:list ,可以看到如下圖
這個路由聲明創(chuàng)建多個路由來處理資源上的各種行為。生成的控制器為每個行為保留了方法,
同時還包括了 處理 HTTP 動作和 URI 的聲明注釋。
這里需要注意的是因為 HTML 表單不能生成 PUT、 PATCH 或者 DELETE 請求,所以你需要添加一個隱藏的 _method 輸入字段來偽造這些 HTTP 動作。輔助函數(shù) method_field 可以幫你創(chuàng)建這個字段:
{{ method_field("PUT") }}
或者在表單中加入像這樣
表單提交方式不需要變,依舊是 method="POST"即可。
5、控制器路由(5.3以后已經(jīng)取消了,不再贅述)
每條地址規(guī)則都要定義路由,豈不是很累,laravel有一個控制器路由,很好的解決了這個問題。
Route::controller("/example", "ExampleController"); (5.3已棄用)
6、路由組
在很多模塊操作中我們需要把路由分組,對于他們進(jìn)行權(quán)限分組限制,這時候我們就可以使用路由組結(jié)合中間件Middleware來進(jìn)行簡單的限制。
1)建立中間件
首先我們在應(yīng)用根目錄下運(yùn)行如下Artisan命令生成一個測試用的中間件TestMiddleware:
php artisan make:middleware TestMiddleware
這樣會在/app/Http/Middleware目錄下生成一個TestMiddleware.php文件,
打開該文件編輯TestMiddleware類的handle方法如下:
public function handle($request, Closure $next) { if($request->input("age")<18) return redirect()->route("refuse"); return $next($request); }
我們在中間件中定義這段業(yè)務(wù)邏輯的目的是年齡18歲以下的未成年人不能訪問。
2)新增中間件屬性
然后我們打開/app/Http/Kernal.php文件,新增TestMiddleware到Kernel的$routeMiddleware屬性:
test" => AppHttpMiddlewareTestMiddleware::class,到數(shù)組中去
3)定義路由組
Route::group(["middleware"=>"test"],function(){ Route::get("/write/laravelacademy",function(){ //使用Test中間件 }); Route::get("/update/laravelacademy",function(){ //使用Test中間件 }); }); Route::get("/age/refuse",["as"=>"refuse",function(){ return "未成年人禁止入內(nèi)!"; }]);
此時,我們訪問127.0.0.1:9999/write/laravelacademy?age=15時候,
就會自動跳轉(zhuǎn)到http://127.0.0.1:9999/age/refuse。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30614.html
摘要:新增一篇新聞新增失敗輸入不符合要求請輸入標(biāo)題請輸入內(nèi)容新增文章上面代碼中的是為了防攻擊的,每個表單都必須存在。 本文我將結(jié)合簡單例子,完成laravel框架下的增刪改查,希望會對大家有所幫助。在進(jìn)行之前,大家應(yīng)該保證自己的數(shù)據(jù)庫鏈接無誤,artisan命令能正常使用,路由鏈接無問題。 一、創(chuàng)建控制器、路由避免影響其他路由,我們先注釋掉之前聯(lián)系時編寫的所有路由。因為上一章我們已經(jīng)學(xué)會建立...
摘要:從而達(dá)到了軟刪除。不過,你可以通過在查詢中調(diào)用方法來強(qiáng)制查詢已被軟刪除的模型方法也可以被用在關(guān)聯(lián)查詢只取出軟刪除數(shù)據(jù)會只取出軟刪除數(shù)據(jù)恢復(fù)被軟刪除的模型有時候你可能希望取消刪除一個已被軟刪除的模型。 Laravel 有三寶,路由、容器和 Eloquent ORM,Eloquent ORM。我個人一直比較推薦于在實際操作中學(xué)習(xí),之前簡單了解了路由和Eloquent ORM的基本用法,今天...
摘要:打開瀏覽器輸入,如無意外,將出現(xiàn)如下圖,表示框架安裝成功。四系統(tǒng)內(nèi)部后臺管理系統(tǒng)這個是框架自帶的后臺登錄管理系統(tǒng),只需要簡單的命令即可運(yùn)行。出現(xiàn)上圖即為,創(chuàng)建模型成功。 在PHP個各種web開發(fā)框架中,laravel算是一款簡潔、優(yōu)雅的開發(fā)框架,本人也剛剛接觸到laravel,通過學(xué)習(xí)大神們的一些文章,下面是我的一些心得體會,希望可以給初學(xué)者一些幫助,大家一起進(jìn)步。言歸正傳: 本人環(huán)境...
摘要:原文發(fā)表在我的個人網(wǎng)站系列入門教程一最適合中國人的教程本教程示例代碼見大家在任何地方卡住,最快捷的解決方式就是去看我的示例代碼。在此我推薦一個全量中國鏡像。 原文發(fā)表在我的個人網(wǎng)站:Laravel 5 系列入門教程(一)【最適合中國人的 Laravel 教程】 本教程示例代碼見:https://github.com/johnlui/Learn-Laravel-5 大...
摘要:原文發(fā)表在我的個人網(wǎng)站深入理解一基本概念及用法在本系列文章中,我將跟大家一起學(xué)習(xí)的基本用法,探索的各種高級功能,理解背后的運(yùn)行原理,并最終達(dá)到深入理解靈活使用的目的。下一步深入理解二中間操作流 原文發(fā)表在我的個人網(wǎng)站:深入理解 Laravel Eloquent(一)——基本概念及用法 在本系列文章中,我將跟大家一起學(xué)習(xí) Eloquent 的基本用法,探索 Eloquent 的各種...
閱讀 3705·2021-10-13 09:40
閱讀 3163·2021-10-09 09:53
閱讀 3563·2021-09-26 09:46
閱讀 1865·2021-09-08 09:36
閱讀 4258·2021-09-02 09:46
閱讀 1327·2019-08-30 15:54
閱讀 3190·2019-08-30 15:44
閱讀 1035·2019-08-30 11:06