天天看點

Laravel 5.5 RequestRequest(請求)

Request(請求)

$path = $request->path();  // 擷取請求路徑
$request->is('user/*');  // 驗證請求路徑是否與給定模式比對,該方法參數支援 * 通配符
           
// 擷取請求URL
    $url = $request->url();  // 不包含查詢字元串
    $url_with_query = $request->fullUrl();  // 包含查詢字元串
           
// 擷取請求方法
    $method = $request->method(); // GET/POST
    if($request->isMethod('post')){
        // true or false
    }
           
// 擷取請求輸入
    (擷取所有輸入值)
        $input = $request->all();
    
    (擷取單個輸入值)
        $name = $request->input('name');
        $name = $request->input('name', '學院君'); // 如果請求輸入值在目前請求 URL 中未出現時該值将會被傳回
        $input = $request->input('products.0.name'); // 處理表單數組輸入時,可以使用”.”來通路數組輸入
        $names = $request->input('products.*.name'); // 處理表單數組輸入時,可以使用”.”來通路數組輸入
    
    (從查詢字元串中擷取輸入)
        $name = $request->query('name');
        $name = $request->query('name', '學院君');
        $query = $request->query();
    
    (通過動态屬性擷取輸入)
        $name = $request->name;
    
    (擷取JSON輸入值)
        $name = $request->input('user.name');
    
    (擷取輸入的部分資料)
        $input = $request->only(['username', 'password']);
        $input = $request->only('username', 'password');
        $input = $request->except(['credit_card']);
        $input = $request->except('credit_card');
    
    (判斷請求參數是否存在)
        if ($request->has('name')) {
            // 判斷參數在請求中是否存在,可以使用 has 方法,如果參數存在則傳回 true
        }
    
        if ($request->has(['name', 'email'])) {
            // 該方法支援以數組形式查詢多個參數,這種情況下,隻有當參數都存在時,才會傳回 true
        }
    
        if ($request->filled('name')) {
            // 如果你想要判斷參數存在且參數值不為空,可以使用 filled 方法
        }
           
// 上一次請求輸入
    (将輸入存儲到Session)
        $request->flash();
        $request->flashOnly('username', 'email');
        $request->flashExcept('password');
    
    (将輸入存儲到 Session 然後重定向)
        如果你經常需要一次性存儲輸入請求輸入并傳回到表單填寫頁,可以在 redirect() 之後調用 withInput() 方法實作這樣的功能
        return redirect('form')->withInput();
        return redirect('form')->withInput($request->except('password'));
    
    (取出上次請求資料)
        $username = $request->old('username');

           
// Cookie
    (從請求中取出Cookie)
        $value = $request->cookie('name');
    
    (添加Cookie到響應)
        return response('歡迎來到 Laravel 學院')->cookie(
            'name', '學院君', $minutes
        );
    
    (生成Cookie執行個體)
        如果你想要生成一個 Symfony\Component\HttpFoundation\Cookie 執行個體以便後續添加到響應執行個體,可以使用全局輔助函數 cookie,該 Cookie 隻有在添加到響應執行個體上才會發送到用戶端:
        $cookie = cookie('name', '學院君', $minutes);
        return response('歡迎來到 Laravel 學院')->cookie($cookie);

           
// 檔案上傳
    (擷取上傳的檔案)
        $file = $request->file('photo');
        if ($request->hasFile('photo')) {
            // 可以使用 hasFile 方法判斷檔案在請求中是否存在
        }
    
    (驗證檔案是否上傳成功)
        if ($request->file('photo')->isValid()){
            // 使用 isValid 方法判斷檔案在上傳過程中是否出錯
        }
    
    (檔案路徑 & 擴充名)
        $path = $request->photo->path();
        $extension = $request->photo->extension();
    
    (其他檔案方法)
        https://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html
    
    (儲存上傳的檔案)
        store();
            * 接收一個檔案儲存的相對路徑(相對于檔案系統配置的根目錄 ),該路徑不需要包含檔案名,因為系統會自動生成一個唯一ID作為檔案名, 還接收一個可選的參數 —— 用于存儲檔案的磁盤名稱作為第二個參數(對應檔案系統配置 disks 的鍵名,預設值是 local),該方法會傳回相對于根目錄的檔案路徑
                $path = $request->photo->store('images');
                $path = $request->photo->store('images', 's3');
    
            * 如果你不想自動生成檔案名,可以使用 storeAs 方法,該方法接收儲存路徑、檔案名和磁盤名作為參數:
                $path = $request->photo->storeAs('images', 'filename.jpg');
                $path = $request->photo->storeAs('images', 'filename.jpg', 's3');