Laravel文档梳理5、HTTP请求

前言: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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值