TYPO3 Extbase - 重定向到pid

时间:2016-11-11 15:44:07

标签: redirect typo3 extbase typo3-7.6.x

$GLOBALS['TSFE']->pageNotFoundAndExit('');

目前已使用,但我想重定向到网页ID。

使用命令redirectToUri,我找不到解决方案,或者没有工作。

代码:

/**
* initialize action show
* @return void
*/
public function initializeShowAction() {
  if ($this->request->hasArgument('xxx')) {
    if ( $xxx=$this->xxxRepository->findByUid(
      intval($this->request->getArgument('xxx'))
    ) ) {
      $this->request->setArgument('xxx',$xxx);
      return;
    }
  }

$GLOBALS['TSFE']->pageNotFoundAndExit('');

}

5 个答案:

答案 0 :(得分:8)

您可以在控制器中使用以下代码构建一个uri:

$uriBuilder = $this->uriBuilder;
$uri = $uriBuilder
  ->setTargetPageUid($pageUid)
  ->build();
$this->redirectToUri($uri, 0, 404);

答案 1 :(得分:7)

在您的控制器中,您可以使用以下其中一项:

# Internal redirect of request to another controller
$this->forward($actionName, $controllerName, $extensionName, array $arguments);

# External HTTP redirect to another controller
$this->redirect($actionName, $controllerName, $extensionName, array $arguments, $pageUid, $delay = 0, $statusCode = 303);

# Redirect to URI
$this->redirectToURI($uri, $delay=0, $statusCode=303);

# Send HTTP status code
$this->throwStatus($statusCode, $statusMessage, $content);

答案 2 :(得分:2)

谢谢大家。我的解决方案现在是:

$pageUid = $this->settings['myflexformsettingpart'];
$uriBuilder = $this->uriBuilder;
$uri = $uriBuilder
  ->setTargetPageUid($pageUid)
  ->build();
$this->redirectToURI($uri, $delay=0, $statusCode=303);

答案 3 :(得分:0)

我这样用:

$GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFound_handling'] = '/my/404/';

请注意,我使用的是realURL生成的网址。

答案 4 :(得分:0)

您还可以使用控制器的重定向功能。喜欢:

    if(!$pageUid = intval($this->settings['resultPageUid']))
    {
        $pageUid = $GLOBALS['TSFE']->id;
    }
    $this->redirect(null, null, null, null, $pageUid);

因此,如果在您的设置中没有找到要重定向到的页面uid,或者找到的uid不是整数,它将被重定向到当前页面uid。

重定向功能允许再添加2个参数:

  • 延迟,整数,默认为0
  • statusCode,整数,默认值为303