- 上篇文章 PHP - Laravel 路由使用(详细) 。
一、简介
-
在之前路由中配置
路由参数,但它并不适合带大量的请求数据。Route::get('req/{参数名称}', function ($参数名称) { return 'Get 请求'; }); -
通常会在请求链接尾部带上参数,例如:
http://www.dzm.com:8088/req?id=10&name=dzm,?后面附带的参数。 -
Laravel提供了多种获取数据的方式。
二、方式一:Input
-
通过
Input类来获取数据(use Illuminate\Support\Facades\Input;),这里只列一些常用的。// 获取指定参数,并当没传该参数时附带默认值 Input::get('参数名称', '默认值(当参数没传时生效)'); // 获取所有的用户的输入 Input::all(); // 获取指定指定参数 Input::only(['参数名称']); // 获取除指定指定参数以外的所有参数 Input::except(['参数名称']); // 判断是否存在指定参数 Input::has('参数名称'); .... -
例如:获取接口中的
id字段,如果没有默认为0。// 例如:http://www.dzm.com:8088/req?id=10 Route::get('req', function () { return Input::get('id', 0); }); 或者控制器中使用: public function index() { // 可以使用 Input return Input::has('id') ? '存在' : '不存在'; } -
Input使用注意:// 这种写法是错误的,默认带过来的是 Request 对象,而不是 Input Route::get('req', function (Input $input)) { return $input->get('id', 0); }); // 这种写法是正确的,控制器中使用也是一样需要注意这点 Route::get('req', function (Request $request)) { return $request->get('id', 0); });
三、方式二:Request
-
通过
Request类来获取数据(use Illuminate\Http\Request),这里只列一些常用的。// 获取指定参数,并当没传该参数时附带默认值 Request::get('参数名称', '默认值(当参数没传时生效)'); // 获取所有的用户的输入 Request::all(); // 获取指定指定参数 Request::only(['参数名称']); // 获取除指定指定参数以外的所有参数 Request::except(['参数名称']); // 判断是否存在指定参数 Request::has('参数名称'); // 判断请求类型(当一个接口支持多种请求方式的时候可以进行判断) Request::isMethod('请求方式(get、post、put ...)'); .... -
web.php中使用:// 使用 Request:: 不能导入 use Illuminate\Http\Request; Route::get('req', function () { return Request::has('id') ? '存在' : '不存在'; }); // 使用 $request 必须导入 use Illuminate\Http\Request; Route::get('req', function (Request $request) { return $request->has('id') ? '存在' : '不存在'; }); -
控制器(例如:LoginController.php)中使用:<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Input; class LoginController extends Controller { // 登录 public function index(Request $request) { // 不能使用 Request:: 会报错,控制器方法中只能使用 $request // return Request::has('id') ? '存在' : '不存在'; // 可以使用 Input:: // return Input::has('id') ? '存在' : '不存在'; // 每个路由对象都会有 $request 对象 return $request->has('id') ? '存在' : '不存在'; } } -
路由参数 - 细节注意
// 如果不需要使用 $request,且有路由参数 Route::get('req/{tag?}', function ($tag = '') { return $tag; }); // 如果需要使用 $request,且有路由参数 Route::get('req/{tag?}', function (Request $request, $tag = '') { // return $request->has('id') ? '存在' : '不存在'; return $tag; });
四、方式三:request()
-
request()辅助函数方式获取,不需要导入任何库或者命名空间,直接使用。request()函数返回的就是Request类对象,所以他两的可用方法是一致的。// 获取指定参数,并当没传该参数时附带默认值 request()->get('参数名称', '默认值(当参数没传时生效)'); // 获取所有的用户的输入 request()->all(); // 获取指定指定参数 request()->only(['参数名称']); // 获取除指定指定参数以外的所有参数 request()->except(['参数名称']); // 判断是否存在指定参数 request()->has('参数名称'); // 判断请求类型(当一个接口支持多种请求方式的时候可以进行判断) request()->isMethod('请求方式(get、post、put ...)'); .... -
如果需要这个对象更多的可用方法,可以输出该对象的所有可用方法。
dump(get_class_methods(request()));