Laravel - 請求:初學者指南

你好啊,有抱負的開發者們!今天,我們將要深入 Laravel 請求的精彩世界。別擔心如果你從未寫過一行代碼——我將成為你這次興奮旅程中的友好導遊。讓我們開始吧!

Laravel - Request

Laravel 中的請求是什麼?

在我們深入細節之前,讓我們先了解請求是什麼。想像你在一間餐廳裡。你,作為顧客,就像一個網頁瀏覽器。當你請服務生拿菜單給你時,這就像對網頁服務器發出請求。在 Laravel 中,請求是一個對象,包含了用戶瀏覽器發送到你應用程序的所有信息。

检索請求URI

URI是什麼?

URI 是統一資源標識符的縮寫。它就像網頁的地址。例如,在 https://www.example.com/products 中,URI 是 /products

如何獲取請求URI

Laravel 讓你非常容易地獲取當前請求的 URI。以下是如何操作的:

use Illuminate\Http\Request;

public function index(Request $request)
{
$uri = $request->path();
return "URI 是: " . $uri;
}

在這個例子中,我們使用請求對象的 path() 方法來獲取 URI。如果用戶訪問 https://www.example.com/products,這段代碼將返回 "URI 是: products"。

但等等,還有更多!Laravel 提供了幾種其他方法來獲取請求的信息:

方法 描述 示例
url() 獲取完整的URL $request->url()
fullUrl() 獲取帶有查詢字符串的完整URL $request->fullUrl()
is() 判定請求URI是否與某種模式匹配 $request->is('admin/*')
routeIs() 判定當前路由名稱是否與某種模式匹配 $request->routeIs('products.*')

讓我們看看這些方法是如何實際運作的:

public function index(Request $request)
{
echo "完整的 URL: " . $request->url() . "\n";
echo "帶有查詢字符串的完整 URL: " . $request->fullUrl() . "\n";

if ($request->is('admin/*')) {
echo "這是一個管理頁面\n";
}

if ($request->routeIs('products.*')) {
echo "這是一個與產品相關的路由\n";
}
}

检索輸入

現在,讓我們來谈谈如何從用戶那裡獲取輸入。這可能包括表單數據、查詢參數,甚至是請求正文中發送的 JSON。

獲取所有輸入數據

要獲取所有輸入數據作為一個數組,你可以使用 all() 方法:

$input = $request->all();

這會給你一個包含所有輸入數據的數組。這就像請服務生給你菜單上的所有東西!

獲取特定的輸入值

如果你想要獲取一個特定的輸入值,你可以使用 input() 方法:

$name = $request->input('name');

這就像請服務生給你菜單上的特定菜餚。如果輸入不存在,它將返回 null。

你也可以提供一個默認值:

$name = $request->input('name', 'John Doe');

現在,如果 'name' 輸入不存在,它將返回 'John Doe'。

使用表單

當使用 HTML 表單時,你可能只想從表單中檢索值。你可以使用 only() 方法來做到這點:

$formData = $request->only(['name', 'email']);

這會返回一個只包含請求中的 'name' 和 'email' 值的數組。

檢查輸入值是否存在

有時候,在使用輸入值之前,你需要檢查輸入值是否存在。你可以使用 has() 方法來做到這點:

if ($request->has('name')) {
// 使用 name 做些事情
}

這就像在點餐前問服務生是否有特定的菜餚。

獲取 JSON 輸入

如果你的應用程序正在接收 JSON 數據,你可以使用 json() 方法來檢索它:

$data = $request->json('user.name');

這會從像 {"user": {"name": "John"}} 的 JSON 結構中檢索 'name' 字段。

以下是總結我們討論過的輸入檢索方法的表格:

方法 描述 示例
all() 獲取所有輸入數據 $request->all()
input() 獲取特定的輸入值 $request->input('name')
only() 獲取指定的輸入字段 $request->only(['name', 'email'])
has() 檢查輸入值是否存在 $request->has('name')
json() 檢索 JSON 輸入 $request->json('user.name')

結論

至此,各位!我們已經踏出了進入 Laravel 請求世界的第一步。記住,就像學習任何新技能一樣,熟能生巧。不要害怕在個人專案中嘗試這些方法。

在我多年的教學經驗中,我發現最好的學習方式就是實踐。那麼,為什麼不創建一個簡單的表單,並嘗試使用我們學到的這些方法來檢索它的數據呢?你可能會驚訝於你學得有多快!

持續編程,持續學習,最重要的是,持續享受樂趣!下次見,這是你的友好鄰居 Laravel 教師告別。快樂編程!

Credits: Image by storyset