2016-11-11 10 views
2
$GLOBALS['TSFE']->pageNotFoundAndExit(''); 

wird derzeit verwendet, aber ich möchte stattdessen auf eine Seiten-ID umleiten.TYPO3 Extbase - Weiterleitung an Pid

Mit dem Befehl redirectToUri konnte ich keine Lösung finden, oder hat nicht funktioniert.

Code:

/** 
* 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(''); 

} 

Antwort

2

Sie können ein uri mit dem folgenden Code in Ihrem Controller bauen:

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

ich es wie folgt verwendet werden:

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

beachten Sie, dass ich die URL verwenden, die realURL erzeugt.

+0

Ich möchte auf einer ganz anderen Seite umleiten, indem ich PID. Zum Beispiel auf der Homepage (ID 1) – Stigi

+0

Sie können auch '$ GLOBALS ['TYPO3_CONF_VARS'] ['FE'] ['pageNotFound_handling'] = 'index.php? Id = 999';' wo 999 ist PID. Aber ich bin mir nicht sicher, ob RealURL diese URL ändern würde. Daher schlage ich vor, die URL zu verwenden, die realURL für Ihre "komplett andere Seite" generiert. Für Ihre Homepage (angenommen, sie heißt zu Hause) benutzen Sie einfach '/ home /' anstelle von '/ my/404 /' – nbar

4

In Ihrem Controller Sie eine der folgenden Optionen verwenden:

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

Vielen Dank an alle. Meine Lösung ist jetzt:

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