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

В настоящее время используется, но вместо этого я хотел бы перенаправить идентификатор страницы.TYPO3 Extbase - перенаправить на pid

С командой 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(''); 

} 

ответ

2

Вы можете построить URI с помощью следующего кода в контроллере:

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

Я использую это так:

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

обратите внимание, что я использую URL, который генерирует RealUrl.

+0

Я хотел бы перенаправить на совершенно другую страницу с помощью PID. Например, на домашней странице (ID 1) – Stigi

+0

Вы также можете использовать '$ GLOBALS ['TYPO3_CONF_VARS'] ['FE'] ['pageNotFound_handling'] = 'index.php? Id = 999';' где 999 - это PID. Но я не уверен, изменит ли realURL этот URL. Поэтому я предлагаю использовать URL-адрес, который realURL создает для вашей «совершенно другой страницы». Для вашей домашней страницы (предположительно ее дома) просто используйте '/ home /' вместо '/ my/404 /' – nbar

4

В контроллере вы можете использовать один из следующих:

# 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

Спасибо всем. Мое решение сейчас:

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