iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
0
Software Development

30天快速上手Laravel系列 第 16

Day16-[Laravel 資料夾目錄與內容] Request

  • 分享至 

  • xImage
  •  

介紹

通常在Controller 中會使用依賴注入的方式取得 HTTP 請求

使用方法

在Controller的時候就會像這樣使用

<?php

namespace App\Http\Controllers;

use App\Services\ProductService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request; //宣告Request

class ProductController extends Controller
{
    protected $productService;

    public function update(Request $request) //DI 取得request
    {
        $data = $this->productService->update(json_decode($request->getContent()));  
        return response()->json($data);
    }
}

配合route有帶入參數的話

Route::put('product/{id}', 'ProductController@update');

    /**
     * Update product data.
     *
     * @param  Request  $request
     * @param  string  $id
     * @return Response
     */
    public function update(Request $request, $id)
    {
        //
    }

Request methods

另外像request的話其實在laravel有已經封裝好的方法可以直接使用

  • 取得request uri: $uri = $request->path();會得到 route 裡面設定的"api/product",還可以用 is 驗證傳入的route
  • 取得request url:
// Without Query String...
$url = $request->url();
$url = $request->fullUrl();
  • 取得request 方法: $method = $request->method();,一樣可以用 isMethod判斷

  • 取得所有input: $input = $request->all(); //得到的會是array

  • 取得特定欄位:

$name = $request->input('name', 'Book'); //第二個欄位為預設值,可不填
//或是可以直接
$name = $request->name;

//如果是array形式的input,可以使用"."語法取得陣列:
$name = $request->input('products.0.name');
$names = $request->input('products.*.name');

$input = $request->only(['id', 'name']);
$input = $request->except(['price']);

可以用 has 或是 filled 確認是否有輸入值 [兩個確認的內容有點不同要注意]

  • 取得 query
//取得所有query string 參數和值
$query = $request->query();
//取得query string 中 name的value
$name = $request->query('name');
//取得query string 中 name的value,如果沒有,預設會是Helen
$name = $request->query('name', 'Helen');

結論: 其他還有像取得session, cookies或是直接redirect的方法可以用,上面舉的都是比較常會使用的例子,有興趣可以再看官網的更多細節實作。

參考連結:


上一篇
Day15-[Laravel 資料夾目錄與內容] Controller
下一篇
Day 17-[Laravel 資料夾目錄與內容] Request Validation
系列文
30天快速上手Laravel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言