gimme url
The first release
gimme url — отсутствующий генератор URL-адресов для библиотеки League Route. Он способен генерировать относительные и абсолютные пути к именованным маршрутам.
Используйте Composer для установки gimme url :
composer install franzose/gimme-url
Генератор URL-адресов требует, чтобы вы предоставили экземпляры Router
и RequestContext
. Последний собирает информацию из экземпляра PsrHttpMessageServerRequestInterface
и используется для построения абсолютных путей к именованным маршрутам.
<?php
use GimmeUrl RequestContext ;
use GimmeUrl Router ;
use GimmeUrl UrlGenerator ;
use Zend Diactoros ServerRequestFactory ;
$ router = new Router ();
$ router -> get ( ' /foo/{bar} ' , function () {
//
})-> setName ( ' foo_route ' );
// Let's say the request is secure and is made at example.com on 8080 port
$ request = ServerRequestFactory:: fromGlobals ( $ _SERVER , $ _GET , $ _POST , $ _COOKIE , $ _FILES );
$ context = RequestContext:: fromRequest ( $ request );
$ generator = new UrlGenerator ( $ router , $ context );
// Then you'll get this
$ generator -> relative ( ' foo_route ' , [ ' bar ' => ' 123 ' ]); // '/foo/123'
$ generator -> relative ( ' foo_route ' , [ ' bar ' => ' 123 ' , ' qux ' => ' doo ' ]); // '/foo/123?qux=doo'
$ generator -> absolute ( ' foo_route ' , [ ' bar ' => ' 456 ' ]); // 'https://example.com:8080/foo/456'
$ generator -> absolute ( ' foo_route ' , [ ' bar ' => ' 456 ' , ' qux ' => ' doo ' ]); // 'https://example.com:8080/foo/456?qux=doo'