laravel 基础教程 —— 请求

Laravel 接受Ajax的POST请求 Laravel 接受Ajax的请求: Laravel 框架接收Ajax的POST请求很简单,但是有弯路..... 不过 : 这个文章不是初学者看的,至少你们要会创建html界面,创建JS,引用JS库,实现 $.Ajax代码,才行..............不过,我相信,应该都会.. 首先,Laravel框架接收Ajax的Url都是在Routes里面的web.php里设定的...... 阅读详情

HTTP请求

访问请求

为了通过依赖注入能够方便的获取http请求实例,你应该在控制器的构造函数或者控制函数中写入类型声明Illuminate\Http\Request。当前请求的实例会自动的从服务容器中注入:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller {
  public function store (Request $request) {
    $name = $request->input('name');
  }
}

如果你的控制器方法也需要接收来自路由的参数,那么你需要在进行依赖注入的参数之后添加要接收的参数。例如,你的路由是这么定义的:

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

那么你应该先声明依赖注入Illuminate\Http\Reqeust,然后再按序的传递路由参数:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller {
  public function update (Request $request, $id) {
    // 
  }
}

基础的请求信息

Illuminate\Http\Request的实例为你的应用提供了多种检查HTTP请求的方法,它继承自Symfony\Component\HttpFoundation\Request。这里列举了一些常用的方法:

检索请求的URI

path方法返回请求的URI.所以,当请求的目标地址是http://domain.com/foo/bar时,path方法将返回foo/bar:

$uri = $request->path();

is方法允许你来效验所请求的URI是否匹配所提供的模式。你可以使用 *字符来作为通配符:

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

如果你想得到请求的完整路径,那么你可以使用 url 或 fullUrl 方法:

// Without Query String...

$url = $request->url();

// With Query String...

$url = $request->fullUrl();

你也可以在获取完整请求路径的同时追加请求的参数信息,例如,如果请求的目标是 http://domain.com/foo, 下面的方法将返回http://domain.com/foo?bar=baz:

$url = $request->fullUrlWithQuery(['bar' => 'baz']);
检索请求的方式

method方法将返回HTTP请求的方式。你也可以使用isMethod方法来进行http请求方式的匹配效验:

$method = $request->method();

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

PSR-7 请求

PSR-7标准为http指定了一些消息接口,包括请求和响应.如果你想获得PSR-7请求的实例,你需要先安装一些支持库,laravel使用了 Symfon HTTP Bridge 组件来转换典型的laravel请求和响应为PSR-7兼容的实现:

composer require symfony/psr-http-message-bridge

composer require zendframework/zend-diactoros

一旦你安装了这些库,你就可以简单在你的路由或控制器中使用类型提示来获取PSR-7请求:

use Psr\Http\Message\ServerRequestInterface;

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

如果路由或控制器返回的是PSR-7响应的实例, 那么它会自动的转换为laravel响应实例。

获取输入值

获取输入的值

你可以通过Illuminate\Http\Request实例的一些方法来简便的获取用户的输入值.而且你并不需要去关心用户所使用的HTTP请求方式,你可以通过input方法获取所有请求方式的值:

$name = $request->input('name');

你也可以传递第二个参数到input方法,如果该值并不存在于请求中,将作为默认值返回:

$name = $request->input('name', 'Sally');

当表单提交的一些输入值是数组时,你可以使用.操作符来访问请求中的数组值:

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

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

获取JSON请求的输入值

你同样可以使用input方法来访问json请求,只要json请求被设置了正确的请求头 Content-Type: application/json, 那么你就可以使用 . 语法来深入访问json中的数组:

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

判断输入值是否存在

你可以使用has方法来判断,请求中是否包含了用户的某个输入值,如果该值不是空的字符串,那么has方法就会返回true:

if ($request->has('name')) {
  //
}

获取所有的输入值

你可以使用all方法来获取所有的用户输入值, 该方法返回包含所有用户值的数组:

$input = $request->all();

获取部分输入值

你可以使用only或者except方法来获取部分输入值, 这两个方法都接收一个单独的数组或者动态的参数列表:

$input = $request->only(['username', 'password']);

$input = $request->only('username', 'password');

$input = $request->except(['credit_card']);

$input = $request->except('credit_card');

动态属性

你可以通过Illuminat\Http\Request的实例的动态属性来获取用户的输入值.如果你的应用表单中存在name字段,你可以通过下面的方式来获取该请求字段:

$name = $request->name;

当使用动态属性时,laravel会首先查找请求中是否包含该值,然后才会检索路由中的参数.

旧的输入

laravel允许你在下一次请求期间保持该次请求的输入。这种特性在表单验证出错时尤其有用,它可以使你复用上一次的请求进行自动的填充。如果你使用了laravel的验证服务,那么你不需要手动的调用它们,因为laravel内置的验证机制会自动的调用它们。

闪存输入到会话

Illuminate\Http\Request实例的flash方法会闪存当前请求的输入到会话中,这样可以使应用在接受用户的下次请求时进行复用:

$request->flash();

你也可以使用flashOnly和 flashExcept 方法来闪存部分请求输入到会话:

$request->flashOnly(['username', 'email']);

$request->flashExcept('password');

闪存输入到会话接着跳转

一个常用的场景就是你需要连同用户的输入一起返回到上一页中,那么你可以使用withInput链式方法:

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

return redirect('form')->withInput($request->except('password'));

获取旧输入

你可以使用old方法来获取上一次请求所闪存的用户请求:

$username = $request->old('username');

laravel提供了全局old帮助方法。你也可以在blade模板中使用该方法,如果上次请求未闪存该输入,则会返回null:

<input type="text" name="username" value="{{ old('username') }}">

Cookies

从请求中检索cookie

在laravel中所有的cookie在被创建时都会经过一个认证码进行签证加密,这就意味着laravel会验证客户端对cookie的修改.你可以使用Illuminate\Http\Request实例的cookie方法来获取cookie值:

$value = $request->cookie('name');

在响应中附加一个新的cookie

laravel提供了一个全局的cookie帮助方法用来生成一个Symfony\Component\HttpFoundation\Cookie实例,该实例可以被Illuminate\Http\Response实例的withCookie附加:

$response = new Illuminate\Http\Response('Hello World');

$response->withCookie('name', 'value', $minutes);

return $response;

你可以使用cookie方法来创建一个长达5年的长cookie,它要求你使用不带参数的cookie帮助方法直接调用forever方法:

$response->withCookie(cookie()->forever('name', 'value'));

文件

获取上传的文件

你可以通过Illuminate\Http\Request的file方法来访问上传的文件。该方法会返回一个Symfony\Component\HttpFoundation\File\UploadedFile类的实例,它继承自SplFileInfo,提供了多种与文件交互的方法:

$file = $request->file('photo');

你可以使用hasFile方法来判断文件在请求中是否存在:

if ($request->hasFile('photo')) {
  // 
}

验证文件是否上传成功

你可以使用isValid方法来验证文件上传的过程中是否出错:

if ($request->file('photo')->isValid()) {
  //
}

移动上传的文件

你可以使用move方法来将上传的文件从临时目录中迁移到指定的目录中:

$request->file('photo')->move($destinationPath);

$request->file('photo')->move($destinationPath, $fileName);

其他文件方法

UploadedFile还有其他许多可用的方法,你可以查看 该类的API文档 来了解更多.



作者:Dearmadman
链接:http://www.jianshu.com/p/60fc411ab085
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Laravel如何使用ApiToken认证请求 1.打开 database/migrations/2014_10_12_000000_create_users_table.php 这个 migration 文件, 我们需要更改 user 表的结构 2.我们需要为 user 表添加 api_token 字段, 也就是说我们的 token 是保存在数据库中的, 在合适的位置, 添加一行 $table->string('api_token', 60)->unique(); 3.配置好数据库, 通过 php artisan migrate 命 阅读详情

相关推荐

Laravel 5.5 HTTP 请求

访问请求实例 在控制器中,获取当前 HTTP 请求实例,需要在构造函数或方法中,对 Illuminate\Http\Request 类进行依赖注入,这样当前请求实例会被服务容器自动注入: &lt;?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends C...

彳亍 1261

1-20.Laravel框架之图片上传

在laravel里面实现文件的上传是很简单的,不用引入第三方的类库,作者把上传作为一个简单的http请看待的。 获取上传的文件, $file = $request-&gt;file(‘photo’); 验证文件是否存在 $request-&gt;hasFile(‘photo’); 验证文件是否上传成功 $request-&gt;file(‘photo’)-&gt;isValid() ...

郝云博客 881

Laravel 接受Ajax的GET请求

Laravel 框架接收Ajax的GET请求很简单,但是有弯路..... 不过 : 这个文章不是初学者看的,至少你们要会创建html界面,创建JS,引用JS库,实现 $.Ajax代码,才行..............不过,我相信,应该都会.. 首先,Laravel框架接收Ajax的Url都是在Routes里面的web.php里设定的...... 但是,Laravel 接收Url的入口文件就...

爱小雨的豆豆大神 1211

laravel中请求用例$request可用的一些方法小结

laravel中$request可用的一些方法小结 1,请求方法的获取 $method = $request->method(); 2,检测请求方法 $res = $request->isMethod('post'); 3,获取请求的路径 $path = $request->path(); 4,获取完整的url $url = $requ...

weixin_30836759的博客 278

基于Joplin和Joplin Server搭建私有云笔记

我们知道,多端同步功能是笔记工具最重要的功能。只有实现了多端同步,我们才能在工作电脑和手机之间无缝切换笔记体验。Joplin 在同步上做得不错,支持 Dropbox、OneDrive 和 AWS s3(当然国内都没法用),支持 WebDAV 协议,也支持自家的 Joplin Server。 本文介绍如何在自己的服务器上搭建 Joplin Server,并配置好 Joplin Desktop 的同步功能。 前置条件 安装docker 创建 Joplin Server 配置文件 创建配置文件,~/docke

代码时光 1万+

BK3296蓝牙音频SoC深度评测:如何用这颗芯片打造超低功耗TWS耳机?

本文深度评测BK3296蓝牙音频SoC在TWS耳机中的应用,重点解析其22nm工艺带来的超低功耗优势(A2DP模式仅2.8mA)和3×3mm封装设计。通过芯片架构分析、双麦降噪调优及开发套件使用指南,为工程师提供打造高性能TWS耳机的完整解决方案,显著提升续航和音频质量。

rice5的博客 654

PHP_Laravel框架(4)

能够了解laravel文件上传功能 Request对象来上传 # 文件是否上传 hasFile() # 得到文件对象 file() # 获取扩展名 getClientOriginalExtensions() # 上传 move(path,filename) iframe不刷新上传 能够了解在模型文件中创建一对一关联模型的方法 hasOne(关联模型,外键,本表ID) hasMany belongsToMany(关联模型,中间表,本模型对应中间表ID,关联模型对应中间件I

魔法革1996 374

MATLAB信号处理实战:VMD分解参数调优全指南(附避坑技巧)

本文深入探讨了MATLAB中变分模态分解(VMD)的核心参数调优实战技巧。针对模态数K和惩罚系数α的选择难题,提供了从经验估计、可视化观察到量化指标辅助的渐进式调优框架,并分享了避免过分解与欠分解的实用避坑指南,旨在帮助工程师高效处理非平稳信号,提取清晰的物理特征。

weixin_29079671的博客 144

Laravel $request->file()无法获取文件

问题起因 最近在写一个新项目,前端ajax传输图片给后端 大家都知道laravel获取文件的方式是$request->file(),但是昨天在测试一张图片后发现获取不到(null) 排查阶段 经过上传其他图片反复尝试之后,发现是图片大小过大引起的。 于是乎直接调用PHP的$_FILE[‘file’]输出: { "name": "1947aa24769f9b6a0528c9aa89eca0b.jpg", "type": "", "tmp_name": "", "error": 1, "size

Microven 5036

C# 上位机内存泄漏排查指南:3 个工具 + 4 个技巧,从 GC 频繁到稳定运行 720 小时

C# 上位机内存泄漏排查的核心是「先定位泄漏存在,再追溯引用根源,最后修复验证通过「Visual Studio 诊断工具(快速定位)+ dotMemory(深度分析)+ PerfView(生产监控)」三个工具的配合,结合「复现场景、排查静态成员+事件、检查非托管资源、GC 日志验证」四个技巧,可高效解决绝大多数泄漏问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 735

杰理外挂flash使用教程(三): 打包提示音到外部flash(2)

本教程详细介绍了提示音制作与程序配置的全流程规范。提示音制作要求包括:英文命名(8字符内)、单声道转换、标准目录结构(cpu/br23/tools/)及使用user_tone_g.bat脚本生成res.bin资源文件。程序配置需修改:1)启用NOR_FS文件系统;2)调整存储空间;3)配置外置Flash参数;4)增强下载脚本追加资源参数。测试阶段建议替换开机提示音验证功能,扩展开发可参考tone_player.c的索引播放逻辑。所有操作均配有图示说明,关键配置需修改对应头文件和脚本参数。

qq_42014563的博客 586

Laravel Ajax请求

Laravel Ajax请求总结 Ajax请求方法 1、页面需要添加 <meta name="csrf-token" content="{{ csrf_token() }}"> 2、如果是form表单需要添加 {{ csrf_field() }} 或 <input type="hidden" name="_token" value="'.csrf_token().'"> ...

zlshmily的博客 2916

SAP 经营范围(Operating Concern) 和业务范围 (Business Area) 在核算架构或是管理架构中的区别和联系分别是什么 请给具体的示例

摘要:SAP系统中,业务范围(Business Area)和经营范围(Operating Concern)在核算架构中具有不同功能。业务范围是FI/CO共用维度,用于跨公司码的业务线核算(如电子产品、机械设备),支持内部管理和简单对外报表。经营范围则是CO-PA专属维度,聚焦获利能力分析,可细化到产品+客户+区域组合(如分析手机在华东区域的获利情况)。两者存在层级关联:经营范围包含业务范围作为基础维度,业务范围数据会传递至经营范围进行深度分析。实际应用中需先配置业务范围,再设置经营范围并关联相关维度,共同支

金牌架构师 94

Laravel-Throttle完全指南:保护你的Laravel应用免受恶意请求攻击

Laravel-Throttle是一个专为Laravel框架设计的高效请求限流工具,能够帮助开发者轻松实现API和路由的访问频率控制,有效防止恶意请求攻击和资源滥用。本文将带你全面了解如何使用这个强大的工具保护你的Laravel应用。 ## 🚀 快速安装步骤 安装Laravel-Throttle非常简单,只需通过Composer执行以下命令: ```bash composer requir

gitblog_00798的博客 617

Qt代码-软件商店

ui->statusBar->showMessage(QString("%1 已卸载").arg(app["name"].toString()));ui->statusBar->showMessage(QString("开始下载 %1...").arg(app["name"].toString()));QString("%1 已下载完成,是否立即安装?ui->statusBar->showMessage(QString("%1 下载完成").arg(app["name"].toString()));

寒寒豆豆软件公司的博客 111

PINN求解PDE

PINN求解Dirichlet泊松方程 泊松方程引入 −Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2 u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ω import torch import time import numpy as np import matplotlib.pyplot as plt import torch.nn as nn def UU(X, order,prob):

forrestguang的博客 3804

PixiEditor 2D 编辑器从零跑通:像素画、节点动画、扩展开发一次到位

照着这篇走完,你能在 5 分钟内从源码构建并启动 PixiEditor 这款通用 2D 编辑器:像素画、矢量、节点式帧动画、扩展开发,都在同一块画布上。不绕环境坑,全部是工位实测步骤,直接跟做。 这是 PixiEditor 主界面:左侧工具栏、中间画布、右侧取色器和图层面板——就是下一节跑完最小流程后的样子。 [![PixiEditor 2D 编辑器主界面:像素画布、颜色选择器与图层面板](ht

gitblog_00475的博客 403

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

图解 Laravel 请求的完整生命周期

来源 | 优快云博客精选头图 | 视觉中国世间万物皆有生命周期,当我们使用任何工具时都需要理解它的工作原理,那么用起来就会得心应手,应用开发也是如此。理解了它的原理,那么使用起来就会游...

优快云资讯 3409

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

laravel 请求request 接收参数

获取请求输入 获取所有输入值 你可以使用all方法以数组格式获取所有输入值: $input = $request->all(); 获取单个输入值 使用一些简单的方法,就可以从Illuminate\Http\Request实例中访问用户输入。你不需要关心请求所使用的 HTTP 请求方法,因为对所有请求方式的输入都是通过input方法获取用户输入: $name = ...

相对静止 8119

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

laravel请求方法实战

GET请求URL:http://laravel.test.com/article/100/jx Route::get('article/{id}/{name}','TestController@index'); namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App...

June.1 489

Laravel 请求

Laravel 请求

Stussy_Cn 566

laravel-HTTP-请求方法

laravel-HTTP-请求方法-2020-3-22 Route::get($uri, $callback); Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, ...

cloud 1839

Laravel框架一次请求的生命周期

一 摘要 Laravel 生命周期(或者说请求生命周期)概括起来主要分为 3 个主要阶段: 加载项目依赖 创建 Laravel 应用实例 接收请求并响应 而这 3 个阶段的处理都发生在入口文件 public/index.php 文件内(public/index.php 是一个新安装的 Laravel 项目默认入口文件)。 然而 index.php 文件仅包含极少的代码,但却出色的完成了一...

踏浪归来 4310

Laravel的请求

要通过依赖注入的方式来获取当前 HTTP 请求的实例,你应该在控制器方法中类型提示Illuminate\Http\Request 依赖注入 & 路由参数 如果控制器方法要从路由参数中获取数据,则应在其他依赖项之后列出路由参数。例如,如果你的路由是这样定义的: 如下所示使用类型提示Illuminate\Http\Request,就可以通过定义控制器方法获取路由参数id: ...

weixin_30455661的博客 202

laravel 请求

获取请求 要通过依赖注入的方式来获取当前 HTTP 请求的实例,你应该在控制器方法中类型提示Illuminate\Http\Request。传入的请求的实例将通过服务容器自动注入: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserContr...

weixin_38169562的博客 191
上一篇: 集成第三方推送最佳实践
下一篇: MySQL索引
dwf_学海无涯
博客等级 码龄10年 42粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值