laravel request

2017年12月8日 0 条评论 81 次阅读 0 人点赞

访问请求实例

在控制器中获取当前 HTTP 请求实例,需要在构造函数或方法中对 Illuminate\Http\Request 类进行依赖注入,这样当前请求实例会被服务容器自动注入:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * 存储新用户
     *
     * @param Request $request
     * @return Response
     */
    public function store(Request $request)
    {
        $name = $request->input('name');

        //
    }
}

依赖注入 & 路由参数

如果还期望在控制器方法中获取路由参数,只需要将路由参数置于其它依赖之后即可,例如,如果你的路由定义如下:

Route::put('user/{id}','UserController@update');

你仍然可以对 Illuminate\Http\Request 进行依赖注入并通过如下方式定义控制器方法来访问路由参数 id

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * 更新指定用户
     *
     * @param Request $request
     * @param int $id
     * @return Response
     */
    public function update(Request $request, $id)
    {
        //
    }
}

通过路由闭包访问请求

还可以在路由闭包中注入 Illuminate\Http\Request,在执行闭包函数的时候服务容器会自动注入输入请求:

use Illuminate\Http\Request;

Route::get('/', function (Request $request) {
    //
});

请求路径 & 方法

Illuminate\Http\Request 继承自 Symfony\Component\HttpFoundation\Request 类,提供了多个方法来检测应用的 HTTP 请求,下面我们来演示其提供的一些获取请求路径和请求方式的方法:

获取请求路径

path 方法将会返回请求的路径信息,因此,如果请求URL是 http://domain.com/user/1,则 path 方法将会返回 user/1

$path = $request->path();

is 方法允许你验证请求路径是否与给定模式匹配。该方法参数支持 * 通配符:

if($request->is('user/*')){
    //
}

如果请求URL是 http://domain.com/user/1,该方法会返回 true

获取请求URL

想要获取完整的 URL,而不仅仅是路径信息,可以使用请求实例提供的 urlfullUrl 方法, url 方法返回不带查询字符串的 URL,而 fullUrl 方法返回结果则包含查询字符串:

// 不包含查询字符串
$url = $request->url();

// 包含查询字符串
$url_with_query = $request->fullUrl();

例如,我们请求 http://domain.com/user/1?token=laravelacademy.org,则上述 $url 的值是 http://domain.com/user/1$url_with_query 的值是 http://blog.dev/user/1?token=laravelacademy.org

获取请求方法

method 方法将会返回 HTTP 请求方式。你还可以使用 isMethod 方法来验证 HTTP 请求方式是否匹配给定字符串:

$method = $request->method(); // GET/POST

if($request->isMethod('post')){ 
    // true or

lyssom

这个人太懒什么东西都没留下

文章评论(0)