url tags can be used as redirect location
This commit is contained in:
parent
6d76faca57
commit
e47a951287
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Core\Router;
|
namespace App\Core\Router;
|
||||||
|
|
||||||
use App\Core\Entity\Redirect;
|
use App\Core\Entity\Redirect;
|
||||||
|
use App\Core\String\UrlBuilder;
|
||||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
|
@ -13,6 +14,13 @@ use Symfony\Component\HttpFoundation\Request;
|
||||||
*/
|
*/
|
||||||
class RedirectBuilder
|
class RedirectBuilder
|
||||||
{
|
{
|
||||||
|
protected UrlBuilder $urlBuilder;
|
||||||
|
|
||||||
|
public function __construct(UrlBuilder $urlBuilder)
|
||||||
|
{
|
||||||
|
$this->urlBuilder = $urlBuilder;
|
||||||
|
}
|
||||||
|
|
||||||
public function buildResponse(Redirect $redirect, Request $request): RedirectResponse
|
public function buildResponse(Redirect $redirect, Request $request): RedirectResponse
|
||||||
{
|
{
|
||||||
return new RedirectResponse(
|
return new RedirectResponse(
|
||||||
|
@ -31,6 +39,8 @@ class RedirectBuilder
|
||||||
$location = preg_replace('`'.$redirect->getRule().'`sU', $redirect->getLocation(), $data['path']);
|
$location = preg_replace('`'.$redirect->getRule().'`sU', $redirect->getLocation(), $data['path']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$location = $this->urlBuilder->replaceTags($location);
|
||||||
|
|
||||||
if ($redirect->getReuseQueryString() && count($request->query)) {
|
if ($redirect->getReuseQueryString() && count($request->query)) {
|
||||||
$location .= sprintf('?%s', http_build_query($request->query->all()));
|
$location .= sprintf('?%s', http_build_query($request->query->all()));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue