/** * Redirects the request to another action and / or controller. * * @param string $actionName Name of the action to forward to * @param string $controllerName Unqualified object name of the controller to forward to. If not specified, the current controller is used. * @param string $packageKey Key of the package containing the controller to forward to. If not specified, the current package is assumed. * @param array $arguments Array of arguments for the target action * @param integer $delay (optional) The delay in seconds. Default is no delay. * @param integer $statusCode (optional) The HTTP status code for the redirect. Default is "303 See Other" * @param string $format The format to use for the redirect URI * @return void * @throws \TYPO3\Flow\Mvc\Exception\StopActionException * @see forward() * @api */ protected function redirect($actionName, $controllerName = NULL, $packageKey = NULL, array $arguments = NULL, $delay = 0, $statusCode = 303, $format = NULL) { if ($this->mediaType === 'application/json') { // render all arguments if (!empty($arguments)) { foreach ($arguments as $key => $value) { $this->view->assign($key, $value); } } // get uri (like AbstractController->redirect()) // do we need/want the uri? if ($packageKey !== NULL && strpos($packageKey, '\\') !== FALSE) { list($packageKey, $subpackageKey) = explode('\\', $packageKey, 2); } else { $subpackageKey = NULL; } $this->uriBuilder->reset(); if ($format === NULL) { $this->uriBuilder->setFormat($this->request->getFormat()); } else { $this->uriBuilder->setFormat($format); } $uri = $this->uriBuilder->setCreateAbsoluteUri(TRUE)->uriFor($actionName, $arguments, $controllerName, $packageKey, $subpackageKey); $this->view->assign('see', $uri); } else { parent::redirect($actionName, $controllerName, $packageKey, $arguments, $delay, $statusCode, $format); } }
/** * Implementation of the arguments initialization in the action controller: * Automatically registers arguments of the current action * * Don't override this method - use initializeAction() instead. * * @return void * @throws \TYPO3\Flow\Mvc\Exception\InvalidArgumentTypeException * @see initializeArguments() */ public function initializeActionMethodArguments() { \TYPO3\Flow\Mvc\Controller\RestController::initializeActionMethodArguments(); }
/** * Initializes the view before invoking an action method. * * Override this method to solve assign variables common for all actions * or prepare the view in another way before the action is called. * * @param ViewInterface $view The view to be initialized * @return void * @api */ protected function initializeView(ViewInterface $view) { parent::initializeView($view); if (!is_null($this->view) && $this->view instanceof JsonView && $this->request->getFormat() === 'json') { $this->view->setOption('contentTypeHeader', current($this->supportedMediaTypes)); } }