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