Phi*_*p M 2 typo3 extbase typo3-extensions typo3-8.x
当有人访问详情页面但没有记录或记录不可用时,如何重定向到另一个页面?
我有详细记录,例如
domain.com/abc/ABC1234
Run Code Online (Sandbox Code Playgroud)
当有人进来时
domain.com/abc/
Run Code Online (Sandbox Code Playgroud)
...我得到:
Uncaught TYPO3 Exception
#1298012500: Required argument "record" is not set for Vendor\Extension\Controller\ActionController->show. (More information)
TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException thrown in file
/is/htdocs/www/typo3_src-8.7.11/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php in line 425.
Run Code Online (Sandbox Code Playgroud)
...在这种情况下我希望它重定向到:
domain.com/other-page/
Run Code Online (Sandbox Code Playgroud)
...如果没有特定记录,我也需要它。
……怎么办呢?
/**
* action show
*
* @param \Action $record
* @return void
*/
public function showAction(Action $record) {
$this->view->assign('record', $record);
}
Run Code Online (Sandbox Code Playgroud)
以下是一些示例TYPO3 Extbase - 重定向到 pid ...但不确定如何实现它
编辑:有效的是......
/**
* action show
*
* @param \Action $record
* @return void
*/
public function showAction(Action $record=null) {
if ($record === null) {
$pageUid = 75;
$uriBuilder = $this->uriBuilder;
$uri = $uriBuilder
->setTargetPageUid($pageUid)
->build();
$this->redirectToUri($uri, 0, 404);
} else {
$this->view->assign('record', $record);
}
}
Run Code Online (Sandbox Code Playgroud)
该redirect方法需要一个操作和控制器参数。所以你的重定向代码是错误的。
$this->redirect($actionName, $controllerName = NULL, $extensionName = NULL, array $arguments = NULL, $pageUid = NULL, $delay = 0, $statusCode = 303);
Run Code Online (Sandbox Code Playgroud)
要重定向到 PageUID,您需要使用 uriBuilder 和redirectToUri方法。请参阅此处的示例。
| 归档时间: |
|
| 查看次数: |
8808 次 |
| 最近记录: |