TYPO3 Extbase - 重定向到 pid
TYPO3 Extbase - redirect to pid
$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('');
}
我是这样使用的:
$GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFound_handling'] = '/my/404/';
请注意,我使用的是真实 URL 生成的 URL。
您可以在您的控制器中使用以下代码构建一个 uri:
$uriBuilder = $this->uriBuilder;
$uri = $uriBuilder
->setTargetPageUid($pageUid)
->build();
$this->redirectToUri($uri, 0, 404);
在您的控制器中,您可以使用以下其中一项:
# 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);
谢谢大家。我现在的解决方案是:
$pageUid = $this->settings['myflexformsettingpart'];
$uriBuilder = $this->uriBuilder;
$uri = $uriBuilder
->setTargetPageUid($pageUid)
->build();
$this->redirectToURI($uri, $delay=0, $statusCode=303);
您也可以使用控制器的重定向功能。喜欢:
if(!$pageUid = intval($this->settings['resultPageUid']))
{
$pageUid = $GLOBALS['TSFE']->id;
}
$this->redirect(null, null, null, null, $pageUid);
所以如果你的设置中没有找到要跳转到的页面uid或者找到的uid不是整数,就会跳转到当前页面uid。
重定向函数允许多两个参数:
- 延迟,整数,默认0
- statusCode,整数,默认 303
$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('');
}
我是这样使用的:
$GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFound_handling'] = '/my/404/';
请注意,我使用的是真实 URL 生成的 URL。
您可以在您的控制器中使用以下代码构建一个 uri:
$uriBuilder = $this->uriBuilder;
$uri = $uriBuilder
->setTargetPageUid($pageUid)
->build();
$this->redirectToUri($uri, 0, 404);
在您的控制器中,您可以使用以下其中一项:
# 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);
谢谢大家。我现在的解决方案是:
$pageUid = $this->settings['myflexformsettingpart'];
$uriBuilder = $this->uriBuilder;
$uri = $uriBuilder
->setTargetPageUid($pageUid)
->build();
$this->redirectToURI($uri, $delay=0, $statusCode=303);
您也可以使用控制器的重定向功能。喜欢:
if(!$pageUid = intval($this->settings['resultPageUid']))
{
$pageUid = $GLOBALS['TSFE']->id;
}
$this->redirect(null, null, null, null, $pageUid);
所以如果你的设置中没有找到要跳转到的页面uid或者找到的uid不是整数,就会跳转到当前页面uid。
重定向函数允许多两个参数:
- 延迟,整数,默认0
- statusCode,整数,默认 303