demander
Demande HTTP
- Recevoir la demande
- Prétraitement et normalisation des entrées
- Recevoir des données
- Fichiers
- Configurer le proxy de confiance
Accepter les demandes
Pour obtenir l'instance de requête HTTP actuelle via l'injection de dépendances, vous devez introduire la classe IlluminateHttpRequest
sur le contrôleur, et l'instance de requête entrante sera automatiquement injectée par le conteneur de service : IlluminateHttpRequest
类, 传入的请求实例将会由 服务容器 自动注入:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller{ /** * 存储一个新用户。 * * @param Request $request * @return Response */ public function store(Request $request) { $name = $request->input('name'); // } }
依赖注入 & 路由参数
如果你的控制器需要从路由参数中获取数据,你应该在其他依赖项之后列入参数。举个例子,你的路由是这样定义的:
Route::put('user/{id}', 'UserController@update');
你可以通过下面的方法来定义控制器,使用 IlluminateHttpRequest
类来获取你的路由参数 id
:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller{ /** * 更新指定用户 * * @param Request $request * @param string $id * @return Response */ public function update(Request $request, $id) { // } }
通过闭包路由获取参数
你也可以在路由闭包中使用 IlluminateHttpRequest
类, 服务容器会自动的将请求参数注入到路由闭包中:
use Illuminate\Http\Request; Route::get('/', function (Request $request) { // });
请求路径 & 方法
IlluminateHttpRequest
实例提供了一系列方法来验证 HTTP 请求参数,并继承了 SymfonyComponentHttpFoundationRequest
$uri = $request->path();< div name=" d83a24" data-unique="d83a24">
Paramètres d'injection de dépendances et de route
if ($request->is('admin/*')) { // }🎜Vous pouvez définir le contrôleur via la méthode suivante, utilisez la classe
IlluminateHttpRequest
pour obtenir votre paramètre d'itinéraire id
:🎜// 不附带查询串... $url = $request->url(); // 附带查询串... $url = $request->fullUrl();
Obtenir les paramètres via le routage de fermeture
🎜Vous pouvez également utiliserIlluminateHttpRequest
dans la classe de fermetures de routage, le conteneur de service le fera injecter automatiquement les paramètres de la requête dans la fermeture de routage : 🎜$method = $request->method();if ($request->isMethod('post')) { // }🎜🎜🎜
Request path & méthode
🎜IlluminateHttpRequest
fournit une série de méthodes pour vérifier les paramètres de requête HTTP et hérite de la classe SymfonyComponentHttpFoundationRequest
. Voici quelques méthodes importantes de ce cours : 🎜🎜🎜Obtenir le chemin de la requête
La méthode path
renvoie les informations de chemin demandées. Ainsi, si le chemin demandé est http://domain.com/foo/bar
, la méthode path
renverra foo/bar
:path
方法返回请求的路径信息。所以,如果请求的路径是 http://domain.com/foo/bar
, path
方法将会返回 foo/bar
:
composer require symfony/psr-http-message-bridge composer require zendframework/zend-diactoros
is
可以验证传入的请求路径是否与给定的模式匹配。 在这个方法中,你也可以使用 *
字符作为通配符:
use Psr\Http\Message\ServerRequestInterface; Route::get('/', function (ServerRequestInterface $request) { // });
获取请求 URL
可以使用 url
或 fullUrl
方法获取完整的请求 URL。 url
方法返回不含有查询串的 URL, fullUrl
获取包含查询串的 URL:
$input = $request->all();
获取请求 Method
method
方法返回请求的 HTTP 动作。还可以使用 isMethod
方法校验 HTTP 动作是否与给定的客串上匹配:
$name = $request->input('name');
PSR-7 请求
PSR-7 standard 定义了 HTTP 消息接口,包括 请求 和 响应。如果你想用 PSR-7 请求代替 Laravel 请求,需要先安装几个库。 Laravel 使用 Symfony HTTP Message Bridge 组件将典型的 Laravel 请求 和 响应 转换为 PSR-7 兼容实现:
$name = $request->input('name', 'Sally');
一旦安装了这些库,就可以通过在路由闭包或控制器方法中的请求接口类型提示来获取 PSR-7 请求:
$name = $request->input('products.0.name'); $names = $request->input('products.*.name');
{tip} 如果从路由或控制器返回 PSR-7 响应实例,框架会自动将其转换回 Laravel 响应实例并显示。
输入的裁剪和标准化
默认情况下,Laravel 在应用的全局中间件堆栈中包含了 TrimStrings
和 ConvertEmptyStringsToNull
中间件。这些中间件被放在 AppHttpKernel
类的堆栈列表中。它们自动裁剪请求中的所有输入字符串域,同时将空字符串域转换为 null
。这样一来,你就不必担心路由和控制器中的标准化规约问题。
如果想要禁用这个行为,只需要通过从 AppHttpKernel
类的 $middleware
属性中移除它(相当于从应用的中间件堆栈中移除)。
获取输入
获取所有的输入数据
可以使用 all
$input = $request->input();
is
peut vérifier si le chemin de la requête entrante correspond à un modèle donné. Dans cette méthode, vous pouvez également utiliser les caractères *
comme caractères génériques : $name = $request->query('name');🎜Obtenir l'URL de la requête🎜🎜Vous pouvez utiliser
méthode url
ou fullUrl
pour obtenir l'URL complète de la requête. La méthode url
renvoie une URL qui ne contient pas de chaîne de requête, et fullUrl
obtient une URL qui contient une chaîne de requête : 🎜$name = $request->query('name', 'Helen');
method
renvoie l'action HTTP demandée. Vous pouvez également utiliser la méthode isMethod
pour vérifier que l'action HTTP correspond à l'invité donné : 🎜$query = $request->query();🎜🎜
Requête PSR-7
🎜La norme PSR-7 définit l'interface de message HTTP, y compris les requêtes et les réponses. Si vous souhaitez utiliser les requêtes PSR-7 au lieu des requêtes Laravel, vous devez d'abord installer plusieurs bibliothèques. Laravel utilise le composant Symfony HTTP Message Bridge pour convertir les requêtes et réponses typiques de Laravel en implémentations compatibles PSR-7 : 🎜$name = $request->name;🎜Une fois ces bibliothèques installées, elles peuvent être transmises dans des fermetures de routes ou des méthodes de contrôleur. La requête astuce de type d'interface pour obtenir une requête PSR-7 : 🎜
$name = $request->input('user.name');
🎜{tip} Si une instance de réponse PSR-7 est renvoyée par une route ou un contrôleur, le framework la reconvertira automatiquement en instance de réponse Laravel et l'affichera . 🎜🎜🎜
Découpage et normalisation des entrées< / h2>🎜Par défaut, Laravel inclut les middlewares TrimStrings
et ConvertEmptyStringsToNull
dans la pile middleware globale de l'application. Ces middlewares sont placés dans la liste de pile de la classe AppHttpKernel
. Ils suppriment automatiquement tous les champs de chaîne d'entrée dans la requête, tout en convertissant les champs de chaîne vides en null
. De cette façon, vous n'avez pas à vous soucier des conventions standardisées en matière de routage et de contrôleurs. 🎜🎜Si vous souhaitez désactiver ce comportement, supprimez-le simplement de l'attribut $middleware
de la classe AppHttpKernel
(équivalent à le supprimer de la pile middleware de l'application). 🎜🎜🎜🎜Obtenir une entrée
🎜🎜Obtenir toutes les données d'entrée🎜🎜Vous pouvez utiliser la méthode all
pour obtenir tous les tableaux de données d'entrée : 🎜$input = $request->only(['username', 'password']);
$input = $request->only('username', 'password');
$input = $request->except(['credit_card']);
$input = $request->except('credit_card');
🎜🎜Obtenez une seule valeur d'entrée
En utilisant quelques méthodes simples, vous pouvez obtenir toutes les entrées de l'utilisateur via l'instance IlluminateHttpRequest
, sans vous soucier de l'action HTTP demandée par l'utilisateur. Quelle que soit l'action HTTP, la requête de l'utilisateur peut être obtenue par la méthode input
: IlluminateHttpRequest
实例获取用户的全部输入,不需要担心用户请求用的是哪种 HTTP 动作。无论哪种 HTTP 动作, 用户的请求都能被 input
方法获取:
if ($request->has('name')) {
//
}
可以将默认值作为传递给 input
方法的第二个参数。这个值将在请求没有包含该参数时被返回:
if ($request->has(['name', 'email'])) {
//
}
当与包含数组输入的表单协作时,使用 「点」 运算符访问数组元素:
if ($request->filled('name')) {
//
}
不带参数调用 input
方法,能够获取全部输入值(关联数组形式):
$request->flash();
从查询串中获取输入
input
方法从整个请求载体中获取值(包括查询串), query
方法则仅从查询串中获取值:
$request->flashOnly(['username', 'email']);$request->flashExcept('password');
如果查询串值不存在,query
方法的第二个参数将被作为该参数的默认值被返回:
return redirect('form')->withInput();
return redirect('form')->withInput(
$request->except('password')
);
不带参数调用 query
方法,能够获取查询串的所有值(关联数组形式):
$username = $request->old('username');
通过动态属性获取输入
可以通过 IlluminateHttpRequest
实例的动态属性访问用户输入。例如,如果应用表单包含 name
域,可以像下面这样访问该域的值:
<input type="text" name="username" value="{{ old('username') }}">
在使用动态属性时,Laravel 首先会在请求载体中查找参数的值。如果该值不存在,Lavarel 将在路由参数中搜索。
获取 JSON 输入
当向应用传递 JSON 请求时,可以通过 input
方法访问 JSON 数据,只要将请求的 Content-Type
头设置为 application/json
。 同样可以使用 「点」语法访问 JSON 数组:
$value = $request->cookie('name');
获取部分输入数据
如果需要获取输入数据的子集,可以使用 only
或 except
方法。它们接受单个 array
或者动态参数列表:
$value = Cookie::get('name');
{tip} only
方法返回请求中的全部键值对;但是它不返回请求中不存在的键值对。
判断输入值是否存在
has
方法用于判定请求中是否存在指定的值。如果请求中存在该值, has
方法返回 true
:
return response('Hello World')->cookie(
'name','value',$minutes
);
如果给出一个数组, has
方法将判断在请求中,指定的值是否全部存在:
return response('Hello World')->cookie(
'name', 'value', $minutes, $path, $domain, $secure, $httpOnly
);
如果想要判断一个值在请求中是否存在,并且不为空,需要使用 filled
Cookie::queue(Cookie::make('name', 'value', $minutes));
Cookie::queue('name', 'value', $minutes);
Vous pouvez passer la valeur par défaut comme deuxième paramètre à la méthode input
. Cette valeur sera renvoyée lorsque la requête n'inclut pas ce paramètre : $cookie = cookie('name', 'value', $minutes);
return response('Hello World')->cookie($cookie);
Lorsque vous travaillez avec un formulaire contenant une entrée de tableau, utilisez l'opérateur "point" pour accéder aux éléments du tableau : $file = $request->file('photo');
$file = $request->photo;
Appelez input
Méthode pour obtenir toutes les valeurs d'entrée (sous forme de tableau associatif) : if ($request->hasFile('photo'))
{
//
}
🎜Obtenir l'entrée de la chaîne de requête🎜🎜input méthode code> Récupère la valeur de l'ensemble du vecteur de requête (y compris la chaîne de requête), la méthode query
récupère uniquement la valeur de la chaîne de requête : 🎜if ($request->file('photo')->isValid()) {
//
}
🎜Si la valeur de la chaîne de requête n'existe pas, la Méthode query
Le deuxième paramètre sera renvoyé comme valeur par défaut du paramètre : 🎜$path = $request->photo->path();
$extension = $request->photo->extension();
🎜Appelez la méthode query
sans paramètres pour obtenir toutes les valeurs de la chaîne de requête (sous la forme d'un tableau associatif) : 🎜$path = $request->photo->store('images');
$path = $request->photo->store('images', 's3');
🎜🎜Obtenir une entrée via des propriétés dynamiques🎜🎜La saisie utilisateur est accessible via les propriétés dynamiques du Instance IlluminateHttpRequest
. Par exemple, si votre formulaire de candidature contient un champ name
, vous pouvez accéder à la valeur de ce champ comme ceci : 🎜$path = $request->photo->storeAs('images', 'filename.jpg');
$path = $request->photo->storeAs('images', 'filename.jpg', 's3');
🎜Lorsque vous utilisez des propriétés dynamiques, Laravel recherche d'abord la valeur du paramètre dans la requête. corps. Si la valeur n'existe pas, Lavarel effectuera une recherche dans les paramètres de l'itinéraire. 🎜🎜🎜Obtenir une entrée JSON🎜🎜Lorsque vous transmettez une requête JSON à l'application, vous pouvez accéder aux données JSON via la méthode input
, tant que l'en-tête Content-Type
demandé est défini sur application/json
. Vous pouvez également utiliser la syntaxe « point » pour accéder aux tableaux JSON : 🎜<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware{
/**
* 应用程序的可信代理列表
*
* @var array
*/
protected $proxies = [
'192.168.1.1',
'192.168.1.2',
];
/**
* 应该用来检测代理的头信息
*
* @var string
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;}
🎜🎜Obtenir une partie des données d'entrée🎜🎜Si vous avez besoin d'obtenir un sous-ensemble de l'entrée données, vous pouvez utiliser la méthode uniquement
ou sauf
. Ils acceptent un seul tableau
ou une liste de paramètres dynamiques : 🎜/**
* 应用程序的可信代理列表
*
* @var array
*/
protected $proxies = '*';
🎜{tip} La méthode only
renvoie toutes les paires clé-valeur dans la requête ; ne renvoie aucune paire clé-valeur dans la requête. 🎜
🎜🎜Déterminer si la valeur d'entrée existe🎜🎜La méthode has
est utilisée pour déterminer si la valeur spécifiée existe dans le demande. Si la valeur existe dans la requête, la méthode has
renvoie true
: 🎜rrreee🎜Si un tableau est donné, la méthode has
déterminera que dans la requête, Si toutes les valeurs spécifiées existent : 🎜rrreee🎜 Si vous souhaitez déterminer si une valeur existe dans la requête et n'est pas vide, vous devez utiliser la méthode filled
: 🎜rrreee 🎜🎜🎜🎜🎜🎜Old Data
Laravel vous permet de conserver les données entre les requêtes. Cette fonctionnalité est utile lors du remplissage d'un formulaire après une erreur de validation. Cependant, si vous utilisez les fonctionnalités de validation intégrées de Lavarel, vous n'avez pas besoin d'appeler manuellement ces méthodes car certaines fonctionnalités de validation intégrées de Laravel les appelleront automatiquement.
Transmettre les données d'entrée à la session
La méthode flash
de la classe IlluminateHttpRequest
transférera l'entrée actuelle à la session, et elles seront envoyées lorsque l'utilisateur fera cette requête à l'application Toujours disponible : IlluminateHttpRequest
类的 flash
方法将把当前的输入传送到 session ,在用户向应用发出这一次请求时它们仍然可用:
rrreee可以使用 flashOnly
或 flashExcept
方法将请求数据的子集传送给 session。这些方法常用于将密码之类的敏感数据排除在 session 保持之外:
rrreee传送数据并跳转
当你经常需要将输入传送至 session 并紧接着跳转至之前的页面,可以通过在跳转函数后链接调用 withInput
方法轻易地实现:
rrreee获取旧数据
要获取前一次请求传送的数据,可以使用 Request
实例的 old
方法。 old
方法将从 session 拉取之前传送的值:
rrreeeLaravel 还提供了全局的 old
助手。如果要在 Blade 模板中 显示旧数据, old
助手更易用。如果给定域的旧值不存在,它将返回 null
:
rrreeeCookies
从请求中获取 Cookies
Lavarel 框架生成的全部 cookies 都是加密的,并且已经用授权码签名,这意味着如果它们被客户端改变就会失效。使用 IlluminateHttpRequest
实例的 cookie
方法可以从请求中获取 cookie 值:
rrreee也可以使用 Cookie
facade 访问 cookie 值:
rrreee将 Cookies 附加到响应中
可以使用 cookie
方法向输出的 IlluminateHttpResponse
实例附加 cookie。需要传递 名称、值、cookie 的过期时间(以分钟为单位)给该方法:
rrreeecookie
还可以接受另外几个不太常用的参数。通常这些参数和 PHP 内置的 setcookie 方法的参数有着相同的作用和意义:
rrreee同样,你可以使用 Cookie
facade 来 「排列」 用于从应用中附加到输出响应的 cookies。queue
方法接受一个 Cookie
实例或者用于创建 Cookie
rrreee
Vous pouvez utiliser la méthode flashOnly
ou flashExcept
pour transmettre un sous-ensemble des données demandées à la session. Ces méthodes sont souvent utilisées pour exclure les données sensibles telles que les mots de passe de la persistance de session : rrreee🎜Transférer des données et sauter🎜🎜Lorsque vous devez souvent saisir Transfert vers le session, puis passer à la page précédente peut être facilement réalisé en appelant la méthode withInput
après la fonction de saut : 🎜rrreee🎜🎜Get old data🎜🎜Pour récupérer les données transmises par la requête précédente, vous pouvez utiliser la méthode old
de l'instance Request
. La méthode old
extraira la valeur précédemment transmise de la session : 🎜rrreee🎜Laravel fournit également un assistant global old
. Si vous souhaitez afficher les anciennes données dans un modèle Blade, l'assistant old
est plus facile à utiliser. Si l'ancienne valeur du domaine donné n'existe pas, elle renverra null
: 🎜rrreee🎜🎜🎜🎜Cookies🎜🎜🎜Obtenir les cookies de la demande🎜🎜Tous les cookies générés par le framework Lavarel sont cryptés et signés avec un code d'autorisation. Cela signifie qu'ils deviendront invalides s'ils sont modifiés par le client. Utilisez la méthode cookie
de l'instance IlluminateHttpRequest
pour obtenir la valeur du cookie de la requête : 🎜rrreee🎜 Vous pouvez également utiliser la façade Cookie
pour accéder la valeur du cookie : 🎜rrreee< div name="c52fe2" data-unique="c52fe2">🎜🎜Attacher des cookies à la réponse🎜🎜Vous pouvez utiliser la méthode cookie
pour attacher des cookies à la sortie < code>IlluminateHttpResponse. Vous devez transmettre le nom, la valeur et le délai d'expiration du cookie (en minutes) à cette méthode : 🎜rrreee🎜cookie
peut également accepter plusieurs autres paramètres moins couramment utilisés. Habituellement, ces paramètres ont le même rôle et la même signification que les paramètres de la méthode setcookie intégrée de PHP : 🎜rrreee🎜 De même, vous pouvez utiliser la façade Cookie
pour "organiser" les cookies à attacher à la réponse de sortie de la demande. La méthode queue
accepte une instance de Cookie
ou une liste de paramètres requis pour créer un Cookie
. Ces cookies seront ajoutés à la réponse de sortie avant d'être envoyés au navigateur : 🎜rrreee🎜🎜Génération d'instances de cookies
Si vous souhaitez générer une instance SymfonyComponentHttpFoundationCookie
qui peut ensuite être fournie à une instance de réponse, vous pouvez utiliser l'assistant global cookie
. Ce cookie ne sera pas renvoyé au client sans être attaché à l'instance de réponse : SymfonyComponentHttpFoundationCookie
实例,可以使用全局的 cookie
助手。这个 cookie 在没有附加到响应实例前不会传回客户端:
rrreee文件
获取上传的文件
可以使用 IlluminateHttpRequest
实例的 file
方法或者动态属性访问上传文件。 file
方法返回 IlluminateHttpUploadedFile
类的实例,这个类扩展自 PHP 的 SplFileInfo
类并提供用于文件交互的多个方法:
rrreee可以使用 hasFile
方法判断请求中是否存在指定文件:
rrreee验证成功上传
除了验证文件是否存在,还可以使用 isValid
方法校验上传的文件有没有问题:
rrreee文件路径 & 扩展名
UploadedFile
类还包含访问文件的全路径和扩展名的方法。 extension
方法基于文件的内容猜测匹配的文件扩展名。这个扩展名有可能和客户端提供的扩展名不同:
rrreee其它的文件方法
UploadedFile
实例还有另外几个方法可用。浏览 这个类的 API 文档 可以获取这些方法的更多信息。
存储上传文件
要存储上传的文件,先配置好 文件系统。你可以使用 UploadedFile
的 store
方法把上传文件移动到你的某个磁盘上,该文件可能是本地文件系统中的一个位置,甚至像 Amazon S3 这样的云存储位置。
store
方法接受相对于文件系统配置的存储文件根目录的路径。这个路径不能包含文件名,因为系统会自动生成唯一的 ID 作为文件名。
store
方法还接受可选的第二个参数,用于存储文件的磁盘名称。这个方法会返回相对于磁盘根目录的文件路径:
rrreee如果你不想自动生成文件名,那么可以使用 storeAs
rrreee
Obtenir une entrée
all
pour obtenir tous les tableaux de données d'entrée : 🎜$input = $request->only(['username', 'password']); $input = $request->only('username', 'password'); $input = $request->except(['credit_card']); $input = $request->except('credit_card');🎜🎜
Obtenez une seule valeur d'entrée
En utilisant quelques méthodes simples, vous pouvez obtenir toutes les entrées de l'utilisateur via l'instance IlluminateHttpRequest
, sans vous soucier de l'action HTTP demandée par l'utilisateur. Quelle que soit l'action HTTP, la requête de l'utilisateur peut être obtenue par la méthode input
: IlluminateHttpRequest
实例获取用户的全部输入,不需要担心用户请求用的是哪种 HTTP 动作。无论哪种 HTTP 动作, 用户的请求都能被 input
方法获取:
if ($request->has('name')) { // }
可以将默认值作为传递给 input
方法的第二个参数。这个值将在请求没有包含该参数时被返回:
if ($request->has(['name', 'email'])) { // }
当与包含数组输入的表单协作时,使用 「点」 运算符访问数组元素:
if ($request->filled('name')) { // }
不带参数调用 input
方法,能够获取全部输入值(关联数组形式):
$request->flash();
从查询串中获取输入
input
方法从整个请求载体中获取值(包括查询串), query
方法则仅从查询串中获取值:
$request->flashOnly(['username', 'email']);$request->flashExcept('password');
如果查询串值不存在,query
方法的第二个参数将被作为该参数的默认值被返回:
return redirect('form')->withInput(); return redirect('form')->withInput( $request->except('password') );
不带参数调用 query
方法,能够获取查询串的所有值(关联数组形式):
$username = $request->old('username');
通过动态属性获取输入
可以通过 IlluminateHttpRequest
实例的动态属性访问用户输入。例如,如果应用表单包含 name
域,可以像下面这样访问该域的值:
<input type="text" name="username" value="{{ old('username') }}">
在使用动态属性时,Laravel 首先会在请求载体中查找参数的值。如果该值不存在,Lavarel 将在路由参数中搜索。
获取 JSON 输入
当向应用传递 JSON 请求时,可以通过 input
方法访问 JSON 数据,只要将请求的 Content-Type
头设置为 application/json
。 同样可以使用 「点」语法访问 JSON 数组:
$value = $request->cookie('name');
获取部分输入数据
如果需要获取输入数据的子集,可以使用 only
或 except
方法。它们接受单个 array
或者动态参数列表:
$value = Cookie::get('name');
{tip}
only
方法返回请求中的全部键值对;但是它不返回请求中不存在的键值对。
判断输入值是否存在
has
方法用于判定请求中是否存在指定的值。如果请求中存在该值, has
方法返回 true
:
return response('Hello World')->cookie( 'name','value',$minutes );
如果给出一个数组, has
方法将判断在请求中,指定的值是否全部存在:
return response('Hello World')->cookie( 'name', 'value', $minutes, $path, $domain, $secure, $httpOnly );
如果想要判断一个值在请求中是否存在,并且不为空,需要使用 filled
Cookie::queue(Cookie::make('name', 'value', $minutes)); Cookie::queue('name', 'value', $minutes);Vous pouvez passer la valeur par défaut comme deuxième paramètre à la méthode
input
. Cette valeur sera renvoyée lorsque la requête n'inclut pas ce paramètre : $cookie = cookie('name', 'value', $minutes); return response('Hello World')->cookie($cookie);Lorsque vous travaillez avec un formulaire contenant une entrée de tableau, utilisez l'opérateur "point" pour accéder aux éléments du tableau :
$file = $request->file('photo'); $file = $request->photo;Appelez
input
Méthode pour obtenir toutes les valeurs d'entrée (sous forme de tableau associatif) : if ($request->hasFile('photo')) { // }🎜Obtenir l'entrée de la chaîne de requête🎜🎜
input méthode code> Récupère la valeur de l'ensemble du vecteur de requête (y compris la chaîne de requête), la méthode query
récupère uniquement la valeur de la chaîne de requête : 🎜if ($request->file('photo')->isValid()) {
//
}
🎜Si la valeur de la chaîne de requête n'existe pas, la Méthode query
Le deuxième paramètre sera renvoyé comme valeur par défaut du paramètre : 🎜$path = $request->photo->path();
$extension = $request->photo->extension();
🎜Appelez la méthode query
sans paramètres pour obtenir toutes les valeurs de la chaîne de requête (sous la forme d'un tableau associatif) : 🎜$path = $request->photo->store('images');
$path = $request->photo->store('images', 's3');
🎜🎜Obtenir une entrée via des propriétés dynamiques🎜🎜La saisie utilisateur est accessible via les propriétés dynamiques du Instance IlluminateHttpRequest
. Par exemple, si votre formulaire de candidature contient un champ name
, vous pouvez accéder à la valeur de ce champ comme ceci : 🎜$path = $request->photo->storeAs('images', 'filename.jpg');
$path = $request->photo->storeAs('images', 'filename.jpg', 's3');
🎜Lorsque vous utilisez des propriétés dynamiques, Laravel recherche d'abord la valeur du paramètre dans la requête. corps. Si la valeur n'existe pas, Lavarel effectuera une recherche dans les paramètres de l'itinéraire. 🎜🎜🎜Obtenir une entrée JSON🎜🎜Lorsque vous transmettez une requête JSON à l'application, vous pouvez accéder aux données JSON via la méthode input
, tant que l'en-tête Content-Type
demandé est défini sur application/json
. Vous pouvez également utiliser la syntaxe « point » pour accéder aux tableaux JSON : 🎜<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware{
/**
* 应用程序的可信代理列表
*
* @var array
*/
protected $proxies = [
'192.168.1.1',
'192.168.1.2',
];
/**
* 应该用来检测代理的头信息
*
* @var string
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;}
🎜🎜Obtenir une partie des données d'entrée🎜🎜Si vous avez besoin d'obtenir un sous-ensemble de l'entrée données, vous pouvez utiliser la méthode uniquement
ou sauf
. Ils acceptent un seul tableau
ou une liste de paramètres dynamiques : 🎜/**
* 应用程序的可信代理列表
*
* @var array
*/
protected $proxies = '*';
🎜{tip} La méthode only
renvoie toutes les paires clé-valeur dans la requête ; ne renvoie aucune paire clé-valeur dans la requête. 🎜
🎜🎜Déterminer si la valeur d'entrée existe🎜🎜La méthode has
est utilisée pour déterminer si la valeur spécifiée existe dans le demande. Si la valeur existe dans la requête, la méthode has
renvoie true
: 🎜rrreee🎜Si un tableau est donné, la méthode has
déterminera que dans la requête, Si toutes les valeurs spécifiées existent : 🎜rrreee🎜 Si vous souhaitez déterminer si une valeur existe dans la requête et n'est pas vide, vous devez utiliser la méthode filled
: 🎜rrreee 🎜🎜🎜🎜🎜🎜Old Data
Laravel vous permet de conserver les données entre les requêtes. Cette fonctionnalité est utile lors du remplissage d'un formulaire après une erreur de validation. Cependant, si vous utilisez les fonctionnalités de validation intégrées de Lavarel, vous n'avez pas besoin d'appeler manuellement ces méthodes car certaines fonctionnalités de validation intégrées de Laravel les appelleront automatiquement.
Transmettre les données d'entrée à la session
La méthode flash
de la classe IlluminateHttpRequest
transférera l'entrée actuelle à la session, et elles seront envoyées lorsque l'utilisateur fera cette requête à l'application Toujours disponible : IlluminateHttpRequest
类的 flash
方法将把当前的输入传送到 session ,在用户向应用发出这一次请求时它们仍然可用:
rrreee可以使用 flashOnly
或 flashExcept
方法将请求数据的子集传送给 session。这些方法常用于将密码之类的敏感数据排除在 session 保持之外:
rrreee传送数据并跳转
当你经常需要将输入传送至 session 并紧接着跳转至之前的页面,可以通过在跳转函数后链接调用 withInput
方法轻易地实现:
rrreee获取旧数据
要获取前一次请求传送的数据,可以使用 Request
实例的 old
方法。 old
方法将从 session 拉取之前传送的值:
rrreeeLaravel 还提供了全局的 old
助手。如果要在 Blade 模板中 显示旧数据, old
助手更易用。如果给定域的旧值不存在,它将返回 null
:
rrreeeCookies
从请求中获取 Cookies
Lavarel 框架生成的全部 cookies 都是加密的,并且已经用授权码签名,这意味着如果它们被客户端改变就会失效。使用 IlluminateHttpRequest
实例的 cookie
方法可以从请求中获取 cookie 值:
rrreee也可以使用 Cookie
facade 访问 cookie 值:
rrreee将 Cookies 附加到响应中
可以使用 cookie
方法向输出的 IlluminateHttpResponse
实例附加 cookie。需要传递 名称、值、cookie 的过期时间(以分钟为单位)给该方法:
rrreeecookie
还可以接受另外几个不太常用的参数。通常这些参数和 PHP 内置的 setcookie 方法的参数有着相同的作用和意义:
rrreee同样,你可以使用 Cookie
facade 来 「排列」 用于从应用中附加到输出响应的 cookies。queue
方法接受一个 Cookie
实例或者用于创建 Cookie
rrreee
Vous pouvez utiliser la méthode flashOnly
ou flashExcept
pour transmettre un sous-ensemble des données demandées à la session. Ces méthodes sont souvent utilisées pour exclure les données sensibles telles que les mots de passe de la persistance de session : rrreee🎜Transférer des données et sauter🎜🎜Lorsque vous devez souvent saisir Transfert vers le session, puis passer à la page précédente peut être facilement réalisé en appelant la méthode withInput
après la fonction de saut : 🎜rrreee🎜🎜Get old data🎜🎜Pour récupérer les données transmises par la requête précédente, vous pouvez utiliser la méthode old
de l'instance Request
. La méthode old
extraira la valeur précédemment transmise de la session : 🎜rrreee🎜Laravel fournit également un assistant global old
. Si vous souhaitez afficher les anciennes données dans un modèle Blade, l'assistant old
est plus facile à utiliser. Si l'ancienne valeur du domaine donné n'existe pas, elle renverra null
: 🎜rrreee🎜🎜🎜🎜Cookies🎜🎜🎜Obtenir les cookies de la demande🎜🎜Tous les cookies générés par le framework Lavarel sont cryptés et signés avec un code d'autorisation. Cela signifie qu'ils deviendront invalides s'ils sont modifiés par le client. Utilisez la méthode cookie
de l'instance IlluminateHttpRequest
pour obtenir la valeur du cookie de la requête : 🎜rrreee🎜 Vous pouvez également utiliser la façade Cookie
pour accéder la valeur du cookie : 🎜rrreee< div name="c52fe2" data-unique="c52fe2">🎜🎜Attacher des cookies à la réponse🎜🎜Vous pouvez utiliser la méthode cookie
pour attacher des cookies à la sortie < code>IlluminateHttpResponse. Vous devez transmettre le nom, la valeur et le délai d'expiration du cookie (en minutes) à cette méthode : 🎜rrreee🎜cookie
peut également accepter plusieurs autres paramètres moins couramment utilisés. Habituellement, ces paramètres ont le même rôle et la même signification que les paramètres de la méthode setcookie intégrée de PHP : 🎜rrreee🎜 De même, vous pouvez utiliser la façade Cookie
pour "organiser" les cookies à attacher à la réponse de sortie de la demande. La méthode queue
accepte une instance de Cookie
ou une liste de paramètres requis pour créer un Cookie
. Ces cookies seront ajoutés à la réponse de sortie avant d'être envoyés au navigateur : 🎜rrreee🎜🎜Génération d'instances de cookies
Si vous souhaitez générer une instance SymfonyComponentHttpFoundationCookie
qui peut ensuite être fournie à une instance de réponse, vous pouvez utiliser l'assistant global cookie
. Ce cookie ne sera pas renvoyé au client sans être attaché à l'instance de réponse : SymfonyComponentHttpFoundationCookie
实例,可以使用全局的 cookie
助手。这个 cookie 在没有附加到响应实例前不会传回客户端:
rrreee文件
获取上传的文件
可以使用 IlluminateHttpRequest
实例的 file
方法或者动态属性访问上传文件。 file
方法返回 IlluminateHttpUploadedFile
类的实例,这个类扩展自 PHP 的 SplFileInfo
类并提供用于文件交互的多个方法:
rrreee可以使用 hasFile
方法判断请求中是否存在指定文件:
rrreee验证成功上传
除了验证文件是否存在,还可以使用 isValid
方法校验上传的文件有没有问题:
rrreee文件路径 & 扩展名
UploadedFile
类还包含访问文件的全路径和扩展名的方法。 extension
方法基于文件的内容猜测匹配的文件扩展名。这个扩展名有可能和客户端提供的扩展名不同:
rrreee其它的文件方法
UploadedFile
实例还有另外几个方法可用。浏览 这个类的 API 文档 可以获取这些方法的更多信息。
存储上传文件
要存储上传的文件,先配置好 文件系统。你可以使用 UploadedFile
的 store
方法把上传文件移动到你的某个磁盘上,该文件可能是本地文件系统中的一个位置,甚至像 Amazon S3 这样的云存储位置。
store
方法接受相对于文件系统配置的存储文件根目录的路径。这个路径不能包含文件名,因为系统会自动生成唯一的 ID 作为文件名。
store
方法还接受可选的第二个参数,用于存储文件的磁盘名称。这个方法会返回相对于磁盘根目录的文件路径:
rrreee如果你不想自动生成文件名,那么可以使用 storeAs
rrreee