답변:
이것은 Drupal 8에서 사용해야하는 코드입니다 . 자세한 내용은 레코드 변경을 참조하십시오 .
use Symfony\Component\HttpFoundation\RedirectResponse;
function my_goto($path) {
$response = new RedirectResponse($path);
$response->send();
return;
}
use Symfony\Component\HttpFoundation\RedirectResponse;
Anu Mathew의 응답을 바탕으로 ;
상태 코드를 추가하려면 RedirectResponse 클래스의 두 번째 매개 변수입니다.
use Symfony\Component\HttpFoundation\RedirectResponse;
function my_goto($path) {
$response = new RedirectResponse($path, 302);
$response->send();
return;
}
drupal 8에서 아직 작업하지 않았지만 설명서에 따라 drupal_goto
Drupal 8에서 제거되었습니다.
대신에 drupal_goto
다음을 작성해야합니다.
return new RedirectResponse(\Drupal::url('route.name'));
그리고 매개 변수가있는 이와 같은 것 :
return new RedirectResponse(\Drupal::url('route.name', [], ['absolute' => TRUE]));
https://www.drupal.org/node/2023537 및 클래스 RedirectResponse를 확인하십시오.
\Drupal::url('route.name')
귀하의 URL 또는 절대 URL 로 바꾸 십시오.
내장 된 교향곡 EventDispatcher 구성 요소를 활용하여이를 수행 할 수 있습니다. 사용자 정의 모듈을 작성하기 만하면됩니다. services.yml 파일을 추가하고 적절한 서비스 구성을 제공하십시오.
services:
mymodue.subscriber:
class: Drupal\my_module\EventSubscriber
tags:
- { name: event_subscriber }
모듈의 src 디렉토리에 eventSubscriber.php 클래스를 생성하고 여기에 메소드를 설명하십시오.
<?php
use Symfony\Component\HttpFoundation\RedirectResponse;
public function checkForCustomRedirect(GetResponseEvent $event) {
$route_name = \Drupal::request()->attributes->get(RouteObjectInterface::ROUTE_NAME);
if($route_name === 'module.testPage') {
$event->setResponse(new RedirectResponse($url, $status = 302,$headers);
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events = [];
$events[KernelEvents::REQUEST][] = array('checkForCustomRedirect');
return $events;
}
나를 위해 완벽하게 작동하는 리디렉션 코드는 다음과 같습니다.
$response = new RedirectResponse($path);
return $response->send();
다른 경우에는 다음과 같은 예외 또는 오류가 발생합니다. LogicException : 컨트롤러가 응답을 반환해야합니다.
또는
https://www.drupal.org/project/drupal/issues/2852657
그것에 대한 토론이 이미 있습니다. 희망이 있습니다!
내부 또는 외부 리디렉션에서 작동합니다.
use Symfony\Component\HttpFoundation\RedirectResponse;
use Drupal\Core\Url;
$url = Url::fromUri('internal:/node/27'); // choose a path
// $url = Url::fromUri('https://external_site.com/');
$destination = $url->toString();
$response = new RedirectResponse($destination, 301);
$response->send();