HTTP Requests
# Type-hint
You should type-hint the Illuminate\Http\Request class on your controller method.
使用Request,需要在控制器方法里导入 Illuminate\Http\Request 类
use Illuminate\Http\Request;
生成一个Request对象:
Request $request
# Accessing The Request
To obtain an instance of the current HTTP request via dependency injection The incoming request instance will automatically be injected by the service container:
是通过依赖注入来获取一个当前HTTP请求的示例
$name = Request->input('name');
# Retrieving Input
Retrieving All Input Data
You may also retrieve all of the input data as anarrayusing theallmethod:
用 all 方法将检索到的所有数据作为一个数组
$input = Request->all();
下面我们来举例:
假设情况:
我们从表单获取过来的数据是 用户注册信息(userInfo) 的形式,里面有昵称(nickname)、密码(passwd)和 邮箱(mail);
我们要将这些信息存储到用户注册信息表(table usersInfo)里;
我们还想从URL(https://......?inviterInfo=admin)里获取到 邀请该用户注册的邀请人信息(inviterInfo),将其也存储到用户注册信息表里。
input() 实现方式:
我们通过Request的 input 方法获取表单数据,并存储到$data变量中。
$data = $request->input('userInfo');
我们使用这种方法获取过来的数组是这个样子的:
array:3[
"nickname" => "trail"
"passwd" => "123qwe"
]
那我们再通过该方法获取到邀请人信息。
$inviterInfo = $request->input('inviterInfo', '');
所以我们在存储时,直接存储 $data 就可以;
如果想要存储邀请人的信息,使用 $data['inviterInfo']->$inviterInfo 后再去存储,就可以存上去了。
all() 实现方式:
我们通过Request的 all 方法获取表单数据,并存储到$data变量中。
$data = $request->all()
我们通过这种方法获取过来的数组其实是这个样子的:
array:3[
"_token" => "iuQna*************************"
"userInfo" => array:3 [
"nickname" => "trail"
"passwd" => "123qwe"
]
"inviterInfo" => "admin"
]
所以,我们如果直接存储 $data 是存不到用户信息注册表(table usersInfo)里面的。
那其实我们如果想要完成上面的操作,只需要在存储的时候使用 $data['userInfo'] 来存储用户的注册信息就可以;
外加使用 $data['userInfo']['inviterInfo']->$data['inviterInfo'] 后再去存储,就可以存储的时候把邀请人的信息也存上。
PS:
那坑呢其实就是存储的时候,如果用 all() 方法获取过来的数据,一定要记得它是一个多维数组,
如果单纯的直接存 $data ,是存不上的,需要注意一下。
参考资料: Laravel 官方文档(https://laravel.com/docs/5.5)
领取专属 10元无门槛券
私享最新 技术干货