前言:Laravel文档梳理,仅作为记录后看,无关其他。
1、如何获取发起的请求的参数?
在控制器的构造器或方法中,使用 Illuminate\Http\Request,当前的请求实例,便会自动由服务器注入:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
{
/**
* 保存新的用户。
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$name = $request->input('name');
//
}
}
2、如果既有请求的参数,又有路由的参数,控制器的方法怎么处理?
举例:
Route::put('user/{id}', 'UserController@update');
控制器方法获取路由参数:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
{
/**
* 更新指定的用户。
*
* @param Request $request
* @param int $id
* @return Response
*/
public function update(Request $request, $id)
{
//
}
}
Ps:
1、Illuminate\Http\Request 实例,提供了很多中用于获取http请求的方法。
2、Illuminate\Http\Request继承的是 Symfony\Component\HttpFoundation\Request类
3、Symfony\Component\HttpFoundation\Request类常用的方法
1)获取请求的uri
$uri = $request->path();
Ps:如果收到的请求目标是 http://domain.com/foo/bar,那么 path 方法就会返回 foo/bar
2)验证接收的请求到的uri是否与指定的规则匹配
if ($request->is('admin/*')) {
//
}
3)获取完成的url网址
$url = $request->url();
4)获取请求的方法
$method = $request->method();
if ($request->isMethod('post')) {
//
}
4、获取用户输入的提交数据
$name = $request->input('name');
5、如何直接获取表单中存在的字段的对应值
$name = $request->name;
6、如何给请求的参数一个默认值
$name = $request->input('name', 'Sally');
Ps: 当name这个参数为空,但你又不想这个字段为空,而是必须有值,可以这么设置
7、请求传过来的数据是数组形式,如何获取数组相应的值?
$input = $request->input('products.0.name');
8、判断某个字段是否存在于此次的请求?
if ($request->has('name')) {
//
}
Ps:当字符串不为空时,传会true
9、以数组的形式获取所有请求参数
$input = $request->all();
10、获取部分的输入数据
$input = $request->only(['username', 'password']);
$input = $request->except('credit_card');
11、关于旧数据
Laravel框架可以将本次提交的数据,保留到下次请求发送前。常用语表单验证失败后,重新填入表单的值。
12、如何将请求的数据,闪存到session?
$request->flash();
13、如果你只想将请求中的单个数据保存到session,怎么办呢?
$request->flashOnly('username', 'email');
或
$request->flashExcept('password');
14、如何将请求数据闪存到session后重定向?
常见的实例:将输入的数据闪存后,重定向到前一页,使用withinput()方法
return redirect('form')->withInput();
return redirect('form')->withInput($request->except('password'));
15、如何获取上一次请求后闪存的输入数据?
$username = $request->old('username');
另外,laravel也提供了全局辅助函数old(),比如在blade模板中,就可以这么使用:
{{ old('username') }}
16、如何获取cookie的值?
$value = $request->cookie('name');
Ps: Illuminate\Http\Request实例中的cookie方法,专门用来获取cookie的值
17、如何将新的cookie附加到响应?
$response = new Illuminate\Http\Response('Hello World');
$response->withCookie(cookie('name', 'value', $minutes));
return $response;
18、如何创建一个长期存在为期五年的cookie?
$response->withCookie(cookie()->forever('name', 'value'));
19、laravel如何获取上传文件?
$file = $request->file('photo');
Ps: file方法来自于Illuminate\Http\Request实例,file方法返回的对象是
Symfony\Component\HttpFoundation\File\UploadedFile类的实例。
该类继承了:
PHP的SplFileInfo类。
20、如何确认文件是否上传?
if ($request->hasFile('photo')) {
//
}
21、确认文件是否有效?
if ($request->file('photo')->isValid()) {
//
}
22、如何移动上传的文件?开心 健康 发财
$request->file('photo')->move($destinationPath);
$request->file('photo')->move($destinationPath, $fileName);