Cleaner way to build ugly URLs
This commit is contained in:
parent
7d856c61fb
commit
d97b824a44
1 changed files with 11 additions and 7 deletions
|
@ -9,6 +9,7 @@ namespace Alltube;
|
|||
use InvalidArgumentException;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use RuntimeException;
|
||||
use Slim\Http\Uri;
|
||||
use Slim\Router;
|
||||
|
||||
/**
|
||||
|
@ -27,15 +28,17 @@ class UglyRouter extends Router
|
|||
*/
|
||||
public function dispatch(ServerRequestInterface $request)
|
||||
{
|
||||
parse_str($request->getUri()->getQuery(), $args);
|
||||
$uri = '/';
|
||||
if (isset($args['page'])) {
|
||||
$uri .= $args['page'];
|
||||
$params = $request->getQueryParams();
|
||||
$uri = new Uri('', '');
|
||||
|
||||
if (isset($params['page'])) {
|
||||
// Build an URI that the router can understand.
|
||||
$uri = $uri->withPath($params['page']);
|
||||
}
|
||||
|
||||
return $this->createDispatcher()->dispatch(
|
||||
$request->getMethod(),
|
||||
$uri
|
||||
(string) $uri
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -52,10 +55,11 @@ class UglyRouter extends Router
|
|||
*/
|
||||
public function pathFor($name, array $data = [], array $queryParams = [])
|
||||
{
|
||||
$url = str_replace('/', '/?page=', $this->relativePathFor($name, $data, $queryParams));
|
||||
$queryParams['page'] = $name;
|
||||
$url = Uri::createFromString($this->relativePathFor($name, $data, $queryParams))->withPath('');
|
||||
|
||||
if ($this->basePath) {
|
||||
$url = $this->basePath . $url;
|
||||
$url = $url->withBasePath($this->basePath);
|
||||
}
|
||||
|
||||
return $url;
|
||||
|
|
Loading…
Reference in a new issue