laravel 获取:路由参数、用户请求数据

目录

一、通过 input 获取路由参数

二、通过 request 获取用户请求数据


一、通过 input 获取路由参数

1、声明

       use Illuminate\Support\Facades\Input;

也可以使用

       use Input;    

但是需要在 config/app.php 中配置别名 aliases,添加

       'Input' => 'use Illuminate\Support\Facades\Input:class;

(Facades:门面的意思。静态方法,是一个接口实现。)

2、接收参数的方法

Input::get(参数, 参数默认值)           #获取指定用户的输入。
Input::all()                             #获取所有用户的输入。
Input::get('a')                           # 单个输入
Input::only(['a', 'b'])                 # 多个输入
Input::except(['a', 'b'])              # 除这多个输入之外的其他输入
Input::has('a')                          # 判断是否有参数 a,返回 boolen 类型

即可以获取 get 中的信息,也可以获取 post 中的信息。

<?php

namespace App\Http\Controllers\Admin;

use bar\baz\source_with_namespace;
use Illuminate\Http\Request;               // Request
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;      // Input
use DB;                                    // DB


class IndexController extends Controller
{
    //
    public function task_input($id = 0, $name = null)
    {
        $id = input::get(['id']);
        $name = input::get(['name']);

        echo 'id = ' . $id . '<br>';
        echo 'name = ' . $name . '<br>';
    }
}

?>

二、通过 request 获取用户请求数据

 用户请求数据包括:URL 查询字符串、表单提交数据。

1、声明

       通过 artisan 命令生成控制器,会自动添加 request 声明。

php artisan make:controller [ControllerName]
use Illuminate\Http\Request;               // Request

2、注入请求对象

       方法

$request->all()             // 返回数组,获取所有请求数据
$request->get('a')          // 返回单个参数,只能获取 GET 方法的请求参数

$request->only(['a', 'b'])
$request->except(['a', 'b'])
$request->has('a')
$request->exists('a')            // 同 has

$request->input('a')                      // 可以获取 任何方法 的请求参数
$request->input('a', 'default_value')     // 可以获取 任何方法 的请求参数

       实例

<?php

namespace App\Http\Controllers\Admin;

use bar\baz\source_with_namespace;
use Illuminate\Http\Request;               // Request
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;      // Input
use DB;                                    // DB


class IndexController extends Controller
{
    // 测试路由:http://www.0723.com/task/task3?id=100&name=tom&key=skey

    public function task_request(Request $request)     // 依赖注入,以接口类型为参数类型
    {

        $data = $request->get('id');                     // 传入key, 返回单个参数
        dump($data);
        $data = $request->get('id2', 'id2default');      // 传入key, 返回单个参数,缺省参数
        dump($data);
        $data = $request->input('id');                   // 传入key, 返回单个参数
        dump($data);
        $data = $request->input('id2', 'id2default');    // 传入key, 返回单个参数,缺省参数
        dump($data);


        $data = $request->all();                      // 返回数组,获得所有参数
        dump($data);
        $data = $request->only('id');                 // 传入keys/key,返回数组
        dump($data);
        $data = $request->only(['id', 'name']);       // 
        dump($data);
        $data = $request->except('key');              // 传入keys/key, 返回数组
        dump($data);
        $data = $request->except(['key', 'name']);    // 传入keys/key, 返回数组
        dump($data);


        $data = $request->has('key');             // 传入keys/key,获得 bool
        dump($data);
        $data = $request->has(['id','age']);      // 
        dump($data);
        $data = $request->exists('key');          // 传入keys/key,获得 bool
        dump($data);
        $data = $request->exists(['id','age']);   // 
        dump($data);
    }
}

?>

1. 不管是 URL 路径中的 GET 请求数据,还是表单中的 POST 请求数据,$request->all() 都可以获取到。

2. 除此之外,Laravel 还提供了 Request 门面和全局辅助函数 request(),本质都是调用 Illuminate\Http\Request 对象实例,只不过形式不一样而已,一般就是用 Request 对象实例。

 

 

 

 

 

 

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页