나는 그들이 웹 사이트의 언어를 변경 한 후에 내 사용자를 리디렉션하는 컨트롤러를 사용하고 있습니다.Symfony에서 기본 리디렉션 메시지를 변경할 수 있습니까?
return $this->redirect($this->generateUrl($_redirectTo), 301);
문제는 "원하지 않는/경로 /로 리다이렉트하는"메시지가 표시된다는 것입니다. 해당 메시지를 변경할 수 있습니까?
나는 그들이 웹 사이트의 언어를 변경 한 후에 내 사용자를 리디렉션하는 컨트롤러를 사용하고 있습니다.Symfony에서 기본 리디렉션 메시지를 변경할 수 있습니까?
return $this->redirect($this->generateUrl($_redirectTo), 301);
문제는 "원하지 않는/경로 /로 리다이렉트하는"메시지가 표시된다는 것입니다. 해당 메시지를 변경할 수 있습니까?
실제로 Controller::redirect()
메서드는 새로운 RedirectResponse
개체를 만듭니다.
기본 템플릿은 응답에 hard-coded이지만 여기에 몇 가지 해결 방법이 있습니다.
이 예제에서는 따라서 나는
@templating
서비스를 필요 나뭇 가지 템플릿을 사용하지만 당신은 당신이 페이지를 렌더링하기 위해 원하는대로 사용할 수 있습니다.
첫째, 당신이 원하는 내용에 Acme/FooBundle/Resources/views/Error/
당신에 템플릿 301.html.twig
을 만들 수 있습니다. 이벤트 리스너에서
AcmeFooBundle/자원 @/뷰/오류/301.html.twig
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="1;url={{ uri }}" />
</head>
<body>
You are about to be redirected to {{ uri }}
</body>
</html>
이 서식 할 수있는 RedirectResponse
에 글로벌 싶은 경우 응답을 수신하고 주어진 응답이 인스턴스인지 확인하는 이벤트 리스너를 만듭니다. RedirectResponse
즉,를 계속 사용할 수 있습니다.컨트롤러에서 응답 내용 만 영향을받습니다.
services.yml
services:
acme.redirect_listener:
class: Acme\FooBundle\Listener\RedirectListener
arguments: [ @templating ]
tags:
-
name: kernel.event_listener
event: kernel.response
method: onKernelResponse
한국 전기 \ FooBundle \ 리스너 \ RedirectListener 컨트롤러
사용에서
use Symfony\Component\Templating\EngineInterface;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpFoundation\RedirectResponse;
class RedirectListener
{
protected $templating;
public function __construct(EngineInterface $templating)
{
$this->templating = $templating;
}
public function onKernelResponse(FilterResponseEvent $event)
{
$response = $event->getResponse();
if (!($response instanceof RedirectResponse)) {
return;
}
$uri = $response->getTargetUrl();
$html = $this->templating->render(
'AcmeFooBundle:Error:301.html.twig',
array('uri' => $uri)
);
$response->setContent($html);
}
}
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
class FooController extends Controller
{
public function fooAction()
{
$uri = $this->generateUrl($_redirectTo);
$response = new RedirectResponse($uri, 301);
$response->setContent($this->render(
'AcmeFooBundle:Error:301.html.twig',
array('uri' => $uri)
));
return $response;
}
}
답장을 보내 주셔서 감사합니다. – pangi
정말 고마워요! –