目录
一、通过 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
对象实例。