请求
# 获取请求的路径信息
$uri = $request->path();
# 判断请求路径是否包含给定模式
if ($request->is('admin/*')) {
//
}
# 获取请求的完整 url(没有查询字符串)
$url = $request->url();
# 获取请求的完整 url(带查询字符串)
$url = $request->fullUrl();
# 获取请求的方法
$method = $request->method();
# 判断是否是指定的请求方法
if ($request->isMethod('post')) {
//
}
# 获取所有输入数据
$input = $request->all();
# 获取一个指定的值
$name = $request->input('name');
$name = $request->input('name', 'Sally');
# 使用点访问输入的数组值
$name = $request->input('products.0.name');
$names = $request->input('products.*.name');
# 使用点访问 JSON 数组
$name = $request->input('user.name');
# 获取所有用户输入数据的数组
$input = $request->input();
# 获取查询字符串中的输入值
$name = $request->query('name');
$name = $request->query('name', 'Helen');
# 获取所有查询条件的关联数组
$query = $request->query();
# 通过动态属性访问用户输入
$name = $request->name;
# 获取部分输入数据
$input = $request->only(['username', 'password']);
$input = $request->only('username', 'password');
$input = $request->except(['credit_card']);
$input = $request->except('credit_card');
# 判断输入值是否存在
if ($request->has('name')) {
//
}
if ($request->has(['name', 'email'])) {
//
}
# 判断一个值在请求中是否存在且不为空
if ($request->filled('name')) {
//
}
# 将输入数据传送到 Session
$request->flash();
$request->flashOnly(['username', 'email']);
$request->flashExcept('password');
# 获取上一次请求中闪存的输入
$username = $request->old('username');
# 从请求中获取 Cookies
$value = $request->cookie('name');
$value = Cookie::get('name');
# 获取上传的文件
$file = $request->file('photo');
$file = $request->photo;
# 判断请求中是否存在指定文件
if ($request->hasFile('photo')) {
//
}
# 验证文件成功上传
if ($request->file('photo')->isValid()) {
//
}
# 获取文件的路径
$path = $request->photo->path();
# 根据文件内容判断文件的扩展名
$extension = $request->photo->extension();
# 存储上传文件
$path = $request->photo->store('images');
$path = $request->photo->store('images', 's3');
$path = $request->photo->storeAs('images', 'filename.jpg');
$path = $request->photo->storeAs('images', 'filename.jpg', 's3');
响应
# 自定义响应状态码及响应头信息
return response('Hello World', 200)->header('Content-Type', 'text/plain');
# 添加响应头信息
return response($content)->header('Content-Type', $type)->header('X-Header-One', 'Header Value')->header('X-Header-Two', 'Header Value');
return response($content)->withHeaders([
'Content-Type' => $type,
'X-Header-One' => 'Header Value',
'X-Header-Two' => 'Header Value',
]);
# 添加 Cookies 到响应
// ->cookie($name, $value, $minutes, $path, $domain, $secure, $httpOnly)
return response($content)->header('Content-Type', $type)->cookie('name', 'value', $minutes);
# 重定向
return redirect('home/dashboard');
# 重定向到上一步地址
return back()->withInput();
# 重定向到命名路由
return redirect()->route('login');
return redirect()->route('profile', ['id' => 1]);
# 重定向到控制器方法
// 不需要传递控制器的全部命名空间
return redirect()->action('HomeController@index');
// 重定向到控制器并添加请求参数
return redirect()->action(
'UserController@profile', ['id' => 1]
);
# 重定向到外部域名
return redirect()->away('https://www.google.com');
# 重定向并使用闪存的 Session 数据
return redirect('dashboard')->with('status', 'Profile updated!');
# 视图响应并控制响应状态和头信息
return response()->view('hello', $data, 200)->header('Content-Type', $type);
# JSON 响应
return response()->json([
'name' => 'Abigail',
'state' => 'CA'
]);
# JSONP 响应
return response()->json(['name' => 'Abigail', 'state' => 'CA'])->withCallback($request->input('callback'));
# 文件下载
return response()->download($pathToFile);
return response()->download($pathToFile, $name, $headers);
return response()->download($pathToFile)->deleteFileAfterSend();
# 流下载(字符串响应转换为下载响应,而不需要将其写入磁盘)
return response()->streamDownload(function () {
echo GitHub::api('repo')->contents()->readme('laravel', 'laravel')['contents'];
}, 'laravel-readme.md');
# 文件响应(直接在浏览器显示而不是下载)
return response()->file($pathToFile);
return response()->file($pathToFile, $headers);
# 响应宏(自定义一个可以在多个路由和控制器中复用的响应)
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Response;
class ResponseMacroServiceProvider extends ServiceProvider
{
/**
* 注册应用程序的响应宏
*
* @return void
*/
public function boot()
{
Response::macro('caps', function ($value) {
return Response::make(strtoupper($value));
});
}
}
return response()->caps('foo');