Skip to content

Requests

Getting the request instance

There are two primary ways to obtain a request instance. Here's a brief overview.

Parameter binding

Declare a parameter with the Request type in your controller or middleware invoke methods. The framework will detect it and supply the instance.

function __invoke(Request $request) {}

Helper function

There is a global request() helper function which returns the current instance.

$request = request();

Request information

Get the request path

Gets the path for the request. This always starts with a preceding forward slash (/). For example: "/path/to/file"

$request->path();

Get the request URL

Gets the absolute URL for the request, without query parameters. The optional $path parameter will generate a URL for another path.

$request->url();
// https://www.domain.com/path/to/file

$request->url('/some/page');
// https://www.domain.com/some/page

Get the full URL

Gets the absolute URL for the request, including encoded query parameters.

$request->fullUrl();
// https://www.domain.com/path/to/file?some=query

Get the root URL

Gets the absolute URL to the root of the current domain.

$request->root();
// https://www.domain.com/

Check if the request is from AJAX

Checks whether this request was initiated from AJAX.

if ($request->ajax()) {
    ...
}

Check if the request is secure

Checks whether this request is transmitted over HTTPS.

if ($request->secure()) {
    ...
}

Get the remote address

Returns the client's IP address. Beware, this can be in either IPv4 or IPv6 format.

$request->ip();

Get the user agent

Returns the client's user agent string.

$request->userAgent();

Get headers

Returns the value of the specified header as a string, or null.

$request->header('User-Agent');

User input

Get a query value

Retrieve a query value from the request URI using the query method. The second parameter specifies the return value if the query was not found, which is null by default.

$id = $request->query('id');
$tab = $request->query('tab', 'default');

Get a posted value

Retrieve a posted value from a form using the post method. The second parameter specifies the return value if the value was not found, which is null by default.

$email = $request->post('email');

Get an input value

The input method checks for values from both post and query, in that order. The first match is returned, or the second parameter (null) if no matches were found.

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

Get a JSON value

For JSON requests, you can easily parse the incoming data using the json($key, $default) method.

// Parse the full body
$json = $request->json();

// Get a specific key
$json = $request->json('path.to.key');

// Get any errors in the JSON as a string
$error = $request->jsonError();

Files

Get an uploaded file

To obtain a specific file, use the file($key) method. If there is a file with that name, an UploadedFile instance is returned. Otherwise, null is returned.

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

if (!is_null($file)) {
    if ($file->isValid()) {
        $file->getRealPath();
        $file->move('/var/uploads/', 'newfilename.png');
    }
    else {
        $response->write('Upload error!', $file->getError());
    }
}

Attributes

Attributes store request data in memory. This is useful for sending data from middleware to controllers, for example.

$request->setAttribute('user', ['username' => 'john']);
$request->getAttribute('user');

Sessions

You can access a session instance using the session() method or global helper function. For documentation on how to use sessions, see the sessions page.

$session = $request->session();
$session = session();

Advanced

It's worth noting that the Horizon\Http\Request class extends Symfony\Component\HttpFoundation\Request. For further documentation and advanced usage, consult the Symfony Request documentation.