欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Laravel5.1学习笔记5 请求

shiping1 的头像

Laravel5.1学习笔记5 请求

作者: grkin
发布时间:2015-07-10 14:22:13

 

HTTP 请求

#取得请求实例

    #基本的请求信息

    #PSR-7 请求

#取出输入数据

    #旧的输入

    #Cookies

    #文件

 

#取得请求实例(此部分文档5.1完全重写,注意)

要通过依赖注入获取当前HTTP Request的实例, 你应该在控制器构造器,或方法中 type-hint (类型约束)Illuminate\Http\Request 类, 当前request 实例会被服务容器自动注入:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

class UserController extends Controller
{
    /**
     * Update the specified user.
     *
     * @param  Request  $request
     * @param  int  $id
     * @return Response
     */
    public function update(Request $request, $id)
    {
        //
    }
}

#基本的请求信息

Illuminate\Http\Request   实例提供了不同的方法去验证HTTP请求, Laravel  的 Illuminate\Http\Request   继承了Symfony\Component\HttpFoundation\Request 类, 这里有几个更有用的类方法:

取得 请求Request的 URI

Path方法返回请求的URI, 因此,如果请求的目标是 http://domain.com/foo/bar,  Path方法会返回 foo/bar:

$url = $request->url();

获得Request对象的方法

method方法用来返回请求的HTTP操作, 你也可以用 isMethod 方法来验证HTTP动词匹配一个给定的字符串。
use Psr\Http\Message\ServerRequestInterface;

Route::get('/', function (ServerRequestInterface $request) {
    //
});
如果从路由和控制器返回一个 PSR-7响应实例, 它会自动转为一个Laravel响应实例然后被框架所显示。
 

#取得输入数据

取得特定输入数据

你可以通过 Illuminate\Http\Request 的实例,经由几个简洁的方法取得所有的用户输入数据。不需要担心发出请求时使用的 HTTP 请求,取得输入数据的方式都是相同的。


$input = $request->input('products.0.name');

 

确认是否有输入数据,用has方法,返回true如果有值且不为空。
$input = Request::only('username', 'password');

$input = Request::except('credit_card');

 

#旧输入数据

Laravel 可以让你保留这次的输入数据,直到下一次请求发送前。例如,你可能需要在表单验证失败后重新填入表单值。

将输入数据存成一次性 Session

Illuminate\Http\Request实例中的flash 方法会将当前的输入数据存进 session中,所以下次用户发出请求时可以使用保存的数据:

return redirect('form')->withInput();

return redirect('form')->withInput(Request::except('password'));

取得旧输入数据

若想要取得前一次请求所保存的一次性 Session,你可以使用 Request 实例中的 old 方法。

$value = Request::cookie('name');
 

加上新的 Cookie 到响应

辅助方法 cookie 提供一个简易的工厂方法来产生新的 Symfony\Component\HttpFoundation\Cookie 实例。可以在 Response 实例之后连接withCookie 方法带入 cookie 至响应:

<?php namespace App\Http\Controllers;

use Cookie;
use Illuminate\Routing\Controller;

class UserController extends Controller
{
    /**
     * Update a resource
     *
     * @return Response
     */
     public function update()
     {
        Cookie::queue('name', 'value');

        return response('Hello World');
     }
}

上传文件

取得上传文件

if (Request::file('photo')->isValid())
{
    //
}

移动上传的文件

这个move方法从暂时目录移动文件到一个你指定的永久目录, (PHP配置决定暂时目录)

if (Request::ajax())
{
    //
}

取得请求方法

$url = Request::url();
来自 http://jingpin.jikexueyuan.com/article/44523.html
普通分类: