美文网首页
laravel Request

laravel Request

作者: IthinkIcanfly | 来源:发表于2019-01-30 11:55 被阅读0次

注入请求对象
在 Laravel 中,访问用户输入数据最常用的方式,就是通过注入到控制器方法中的 Illuminate\Http\Request 对象实例,通过该实例,我们可以访问所有用户请求数据,不管是什么方式,什么格式:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class RequestController extends Controller
{
    public function form(Request $request)
    {
        // 通过 $request 实例获取请求数据
    }
}

然后在路由文件中定义一个指向该控制器方法的路由:

Route::post('form', 'RequestController@form');

获取用户请求数据
获取所有请求数据
我们可以通过 $request->all() 获取所有请求数据:

public function form(Request $request)
{
    // 通过 $request 实例获取请求数据
    dd($request->all());
}

只获取部分请求数据
如果只想获取部分请求数据,可以通过 $request 实例上的 except 或 only 方法,这两个方法是相反的,一个用于排除指定字段,一个用于获取指定字段:

$request->except('id');
$request->only(['name', 'site', 'domain']);

判断是否包含指定字段
除此之外,我们还可以通过 $request 实例上的 has 或 exists 方法判断某个字段是否存在:

$id = $request->has('id') ? $request->get('id') : 0;

exists 方法是 has 方法的别名,两者调用方式一样,功能完全等效。

获取指定请求字段值
上面我们已经给出了获取指定字段值的一个方法 get,该方法只能获取通过 GET 请求传递的参数,同理,如果是 POST 请求的话,我们可以通过 post 方法获取对应字段值,此次之外,我们还可以通过 input 方法值,该方法可以从所有请求方式中获取给定字段的值,所以更加通用:

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

我们还可以为 input 方法传递第二个参数作为默认值,如果请求字段为空的话,则使用该默认值:

$site = $request->input('site', 'xxx');

我们可以通过「.」来分别获取每个数组元素:

$request->input('books.0');
$request->input('books.1');

甚至还支持更深层级的嵌套:

dump($request->input('books.0.author'));
dump($request->input('books.1'));

转自https://laravelacademy.org/post/9676.html

相关文章

网友评论

      本文标题:laravel Request

      本文链接:https://www.haomeiwen.com/subject/skgqsqtx.html