HTTP Requests

    To obtain an instance of the current HTTP request via dependency injection, you should type-hint the class on your controller constructor or method. The current request instance will automatically be injected by the :

    If your controller method is also expecting input from a route parameter, simply list your route arguments after your other dependencies. For example, if your route is defined like so:

    1. $app->put('user/{id}', '[email protected]');

    You may still type-hint the Illuminate\Http\Request and access your route parameter id by defining your controller method like the following:

    1. <?php
    2. namespace App\Http\Controllers;
    3. class UserController extends Controller
    4. {
    5. /**
    6. * Update the specified user.
    7. *
    8. * @param Request $request
    9. * @param string $id
    10. * @return Response
    11. */
    12. public function update(Request $request, $id)
    13. {
    14. //
    15. }
    16. }

    The Illuminate\Http\Request instance provides a variety of methods for examining the HTTP request for your application and extends the Symfony\Component\HttpFoundation\Request class. Here are a few more of the useful methods available on this class:

    Retrieving The Request URI

    The path method returns the request's URI. So, if the incoming request is targeted at , the path method will return foo/bar:

    The is method allows you to verify that the incoming request URI matches a given pattern. You may use the * character as a wildcard when utilizing this method:

    1. if ($request->is('admin/*')) {
    2. //
    3. }

    To get the full URL, not just the path info, you may use the url or fullUrl methods on the request instance:

    1. // Without Query String...
    2. $url = $request->url();
    3. // With Query String...
    4. $url = $request->fullUrl();

    Retrieving The Request Method

    The PSR-7 standard specifies interfaces for HTTP messages, including requests and responses. If you would like to obtain an instance of a PSR-7 request, you will first need to install a few libraries. Laravel uses the Symfony HTTP Message Bridge component to convert typical Laravel requests and responses into PSR-7 compatible implementations:

    1. composer require symfony/psr-http-message-bridge
    2. composer require zendframework/zend-diactoros

    Once you have installed these libraries, you may obtain a PSR-7 request by simply type-hinting the request type on your route or controller:

    1. use Psr\Http\Message\ServerRequestInterface;
    2. $app->get('/', function (ServerRequestInterface $request) {
    3. //
    4. });

    If you return a PSR-7 response instance from a route or controller, it will automatically be converted back to a Laravel response instance and be displayed by the framework.

    Retrieving Input

    Retrieving An Input Value

    Using a few simple methods, you may access all user input from your Illuminate\Http\Request instance. You do not need to worry about the HTTP verb used for the request, as input is accessed in the same way for all verbs:

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

    You may pass a default value as the second argument to the input method. This value will be returned if the requested input value is not present on the request:

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

    When working on forms with array inputs, you may use "dot" notation to access the arrays:

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

    Determining If An Input Value Is Present

    Retrieving All Input Data

    You may also retrieve all of the input data as an array using the all method:

    1. $input = $request->all();

    Retrieving A Portion Of The Input Data

    If you need to retrieve a sub-set of the input data, you may use the only and except methods. Both of these methods will accept a single array or a dynamic list of arguments:

    1. $input = $request->only(['username', 'password']);
    2. $input = $request->only('username', 'password');
    3. $input = $request->except(['credit_card']);
    4. $input = $request->except('credit_card');

    Retrieving Uploaded Files

    You may access uploaded files that are included with the Illuminate\Http\Request instance using the file method. The object returned by the file method is an instance of the Symfony\Component\HttpFoundation\File\UploadedFile class, which extends the PHP SplFileInfo class and provides a variety of methods for interacting with the file:

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

    You may determine if a file is present on the request using the hasFile method:

    1. if ($request->hasFile('photo')) {
    2. //
    3. }

    Validating Successful Uploads

    In addition to checking if the file is present, you may verify that there were no problems uploading the file via the isValid method:

    1. if ($request->file('photo')->isValid()) {
    2. //

    Moving Uploaded Files

    To move the uploaded file to a new location, you should use the method. This method will move the file from its temporary upload location (as determined by your PHP configuration) to a more permanent destination of your choosing:

    Other File Methods

    There are a variety of other methods available on UploadedFile instances. Check out the for more information regarding these methods.