我們知道,網路中的路由器是用來選擇路徑、轉送分組的,那麼框架中的路由是用來幹嘛的呢?這裡的路由是用來接收http請求的路徑,透過設定路徑來存取特定程式的功能。路由是框架的核心功能之一,基本所有主流框架都有路由功能。並且,我們可以透過設定路由來將一些長的、深的路徑該成短的、淺的路徑(非常利於seo的一個功能)。
預設路由檔案
所有的laravel#路由都在根目錄的routes目錄下的路由檔案定義,框架預設自動載入這個目錄下的文件。我們來看看routes/web.php這個檔案
use Illuminate\Support\Facades\Route; Route::get('/', function () { return view('welcome'); });
#基本路由
現在,我們在web.php檔案中,新建一個最簡單的路由,程式碼如下:
Route::get('index', function () { return "study laravel"; });
現在,我們在瀏覽器中輸入localhost:8000/index就可以看到"study laravel"這句話了。
常見路由方法
除了上述了get方法外,經常使用的路由方法有:post,put,delete,any,match 。
這裡的any方法表示不管是什麼請求方式都可以,可以是get/post/put等請求方式,它都會處理。而match可以用來指定多個請求,下面來示範match的用法:
Route::match(['get', 'post'], "list", function () { return 'list'; });
#參數傳遞
##的,我們在路由中也會加入參數。例如/news/1這樣是非常的常見。 lavarel的路由方法支援參數的傳遞,如:Route::get('news/{id}', function ($id) { return 'news:' . $id; });上述的路由雖然能夠傳遞參數,但還是無法滿足我的需求,我希望{id}這個參數必須是數字,那麼,可以這樣:
Route::get('news/{id}', function ($id) { return 'news:' . $id; })->where('id', '\d+');我們也可以傳遞多個參數,閉包中的參數會自動一一對應,如:
Route::get('/name/{name}/age/{age}', function($name, $age) { echo "name:$name age:$age"; })->where(['name' => '\w+', 'age' => '\d+']);
路由與控制器綁定
首先,我們建立一個控制器檔案app\Http\Controllers\IndexController.php,程式碼如下:<?php namespace App\Http\Controllers; class IndexController extends Controller { public function news ($id) { echo "news:$id"; } }現在修改路由檔案web.php
Route::get('news/{id}', 'IndexController@news')->where('id', '\d+');現在透過/news/1就能存取IndexController控制器中的news方法了。 若是建立了app/Http/Controllers/Home/IndexController.php,那麼這個控制器的路由該如何設定呢?方法如下:
Route::get('home', 'Home\IndexController@index');
以上是laravel第二講:路由的定義及與控制器綁定的詳細內容。更多資訊請關注PHP中文網其他相關文章!