PHPackages                             guidofaecke/blast-base-url - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. guidofaecke/blast-base-url

ActiveLibrary[HTTP &amp; Networking](/categories/http)

guidofaecke/blast-base-url
==========================

PSR-7 middleware and helpers for working with base URL.

2.3.1(1y ago)1686↓100%[1 issues](https://github.com/guidofaecke/blast-base-url/issues)BSD-2-ClausePHPPHP ~8.2.0|~8.3.0

Since Dec 21Pushed 1y agoCompare

[ Source](https://github.com/guidofaecke/blast-base-url)[ Packagist](https://packagist.org/packages/guidofaecke/blast-base-url)[ RSS](/packages/guidofaecke-blast-base-url/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (17)Versions (18)Used By (0)

Blast\\BaseUrl
==============

[](#blastbaseurl)

Just another fork of mtymek/blast-base-url... Not exactly! The development of mtymek/blast-base-url apparently stopped in 2019, so here we go, strip the cruft and get back to PHP7.4 - 8.1

This package detects base URL of web application. It is useful when you need your app to be served from subdirectory (like `http://localhost/my-project/public`). This can be useful sometimes, especially in development environment.

View helpers for working with assets are also provided in the package.

Detection logic is based on [`laminas-http`](https://github.com/laminas/laminas-http)package.

Installation
------------

[](#installation)

Installation is supported using Composer:

```
$ composer require guidofaecke/blast-base-url

```

If `Zend Component Installer` is present, it will automatically update application configuration.

Usage
-----

[](#usage)

For simplicity, following instructions are targeting applications based on [Mezzio Skeleton](https://github.com/mezzio/mezzio-skeleton), assuming that `laminas/laminas-servicemanager` was selected as DI container.

`Blast\BaseUrl` is based on PSR-7, so it will work well with other frameworks/dispatchers like Slim3 or Relay, just that wiring process will look different.

### Base URL Middleware

[](#base-url-middleware)

Add `BaseUrlMiddleware` to your pipeline, just before routing middleware (`config/pipeline.php` file):

```
// ...
$app->pipe(\Blast\BaseUrl\BaseUrlMiddleware::class);

// ...
$app->pipe(RouteMiddleware::class);
```

`BaseUrlMiddleware` will alter path from request URI, stripping base url. It means that even if you access your project from `http:/localhost/~user/project/public/index.php/foo/bar`, next middleware in the pipe will see the path as `/foo/bar`.

Additionally, two attributes will be added to ServerRequest, holding base URL and base path:

```
echo $request->getAttribute(BaseUrlMiddleware::BASE_URL);
// outputs: /some/subdirectory/index.php

echo $request->getAttribute(BaseUrlMiddleware::BASE_PATH);
// outputs: /some/subdirectory/
```

### Generating URLs

[](#generating-urls)

`BaseUrlMiddleware` is able to automatically configure `UrlHelper`, so that all URLs generated by this helper will have appropriate prefix. This will be done automatically if `UrlHelper`is available in service container.

### Accessing assets - base path

[](#accessing-assets---base-path)

Another feature provided by this package is base path helper. It can be used to generate URLS for your asset files that work correctly under subdirectory.

If `BasePathHelper` is available, `BaseUrlMiddleware` will automatically configure it during execution.

#### Zend View

[](#zend-view)

You will be able to use following syntax inside `zend-view` templates:

```
