【问题标题】:TYPO3 Extbase - redirect to pidTYPO3 Extbase - 重定向到 pid
【发布时间】:2017-03-25 21:16:29
【问题描述】:
$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('');

}

【问题讨论】:

    标签: redirect typo3 extbase typo3-7.6.x


    【解决方案1】:

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

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

    【讨论】:

    • 我认为如果您在控制器中使用直接 $this->uriBuilder 会更好,例如:$uri = $this->uriBuilder ->setTargetPageUid($pageUid) ->build(); 我认为没有理由初始化变量 $uriBuilder
    【解决方案2】:

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

    # 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);
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我是这样使用的:

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

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

        【讨论】:

        • 我想通过 PID 重定向到完全不同的页面。例如在首页(ID 1)
        • 您也可以使用$GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFound_handling'] = 'index.php?id=999';,其中 999 是 PID。但我不确定 realURL 是否会更改该 URL。所以我建议使用 realURL 为您的completely different page 生成的 URL。对于您的主页(假设它被称为主页),只需使用 /home/ 而不是 /my/404/
        【解决方案5】:

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

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

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

        redirect函数允许多2个参数:

        • 延迟,整数,默认 0
        • statusCode,int,默认303

        【讨论】:

          猜你喜欢
          • 2018-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-25
          • 1970-01-01
          • 1970-01-01
          • 2012-05-28
          • 1970-01-01
          相关资源
          最近更新 更多