[英]typo3 flow: catch exception and forward back to originating action
在我的typo3 flow應用程序中,我想在引發異常作為Flash消息后停止執行。 因此,我這樣寫:
public function updateAction(Mitglied $mitglied) {
if ($xy == 'z') {
try {
throw new \TYPO3\Flow\Validation\Exception\InvalidValidationOptionsException('Fehler: In dieser Kombination nicht zulässig', 1);
} catch (\TYPO3\Flow\Validation\Exception\InvalidValidationOptionsException $e) {
$this->flashMessageContainer->addMessage(new \TYPO3\Flow\Error\Error($e->getMessage()));
}
}
$this->mitgliedRepository->update($mitglied);
$this->addFlashMessage('Mitglied erfolgreich geändert.');
$this->redirect('index');
}
如我所願,消息ist顯示為Flash消息。 但是函數的執行不會停止。 有人知道,為什么以及如何預防嗎? 在這種情況下,如果條件為真,則需要重定向到發起動作。
我現在用以下代碼得到它:
// get back to originating request - see https://git.typo3.org/Packages/TYPO3.Flow.git/blob/master:/Classes/TYPO3/Flow/Mvc/Controller/ActionController.php
$referringRequest = $this->request->getReferringRequest();
if ($referringRequest === NULL) {
return;
}
$packageKey = $referringRequest->getControllerPackageKey();
$subpackageKey = $referringRequest->getControllerSubpackageKey();
if ($subpackageKey !== NULL) {
$packageKey .= '\\' . $subpackageKey;
}
$argumentsForNextController = $referringRequest->getArguments();
$argumentsForNextController['__submittedArguments'] = $this->request->getArguments();
$argumentsForNextController['__submittedArgumentValidationResults'] = $this->arguments->getValidationResults();
$this->forward($referringRequest->getControllerActionName(), $referringRequest->getControllerName(), $packageKey, $argumentsForNextController);
最后,這要容易得多:
$this->errorAction()->forwardToReferringRequest();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.