/**
  * This method process the action response.
  * 
  * @param mixed $result
  * @param string $controllerName
  * @param string $actionName
  * @throws Exception
  */
 protected function handleActionResult($result, $controllerName, $actionName, Customweb_Core_Http_IRequest $request)
 {
     if ($result === null) {
         throw new Exception(Customweb_Core_String::_("Action '@action' on controller '@controller' does not return any result.")->format(array('@controller' => $controllerName, '@action' => $actionName)));
     }
     if (is_array($result)) {
         if (isset($result['controller'])) {
             $controllerName = $result['controller'];
         }
         if (!isset($result['action'])) {
             throw new Exception("If you provide a array as response of a action, you have to provde a 'action' key, which indicates the action to which the request is forwarded to.");
         }
         $actionName = $result['action'];
         return $this->invokeControllerAction($request, $controllerName, $actionName);
     } else {
         if (is_string($result) && strpos($result, 'redirect:') === 0) {
             $result = $result;
             $url = substr($result, strlen('redirect:'));
             $response = new Customweb_Core_Http_Response();
             $response->appendHeader('Location: ' . $url);
             return $response;
         } else {
             if (is_string($result)) {
                 $response = new Customweb_Core_Http_Response();
                 $response->setBody($result);
                 return $response;
             } else {
                 if ($result instanceof Customweb_Core_Http_IResponse) {
                     return $result;
                 } else {
                     throw new Exception(Customweb_Core_String::_("Action '@action' on controller '@controller' does not return a valid result.")->format(array('@controller' => $controllerName, '@action' => $actionName)));
                 }
             }
         }
     }
 }
示例#2
0
    /**
     * This method creates a redirect which uses the HTML head for redirection. Most
     * HTTP client implementation will not follow this redirection.
     * 
     * @param string $url
     * @return Customweb_Core_Http_Response
     */
    public static function htmRedirect($url)
    {
        $body = '<html>
			<head>
				<meta http-equiv="refresh" content="0; url=' . $url . '" />
			</head>
			<body>You will be redirected.</body>
		</html>';
        $response = new Customweb_Core_Http_Response();
        $response->setBody($body);
        return $response;
    }