TYPO3 Extbase - 重定向到 pid
Posted
技术标签:
【中文标题】TYPO3 Extbase - 重定向到 pid【英文标题】:TYPO3 Extbase - redirect to 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('');
【问题讨论】:
【参考方案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【讨论】:
以上是关于TYPO3 Extbase - 重定向到 pid的主要内容,如果未能解决你的问题,请参考以下文章
迁移到 TYPO3 9+ 后继续重定向旧的 realurl url