示例#1
0
 /**
  * Handle HMVC request
  * @param Request $request
  * @param array $options
  * @param bool $subrequest
  * @return Response\Json|Response\Layout|Response\PageNotFound|Response\Redirect|string
  * @throws Exception
  */
 public function handleRequest(Request $request, $options = array(), $subrequest = true)
 {
     \Ip\ServiceLocator::addRequest($request);
     $rawResponse = $this->_handleOnlyRequest($request, $options, $subrequest);
     if (!empty($options['returnRawResponse'])) {
         if ($subrequest) {
             \Ip\ServiceLocator::removeRequest();
         }
         return $rawResponse;
     }
     if (empty($rawResponse) || is_string($rawResponse) || $rawResponse instanceof \Ip\View) {
         if ($rawResponse instanceof \Ip\View) {
             $rawResponse = $rawResponse->render();
         }
         if (empty($rawResponse)) {
             $rawResponse = '';
         }
         $response = \Ip\ServiceLocator::response();
         $response->setContent($rawResponse);
     } elseif ($rawResponse instanceof \Ip\Response) {
         \Ip\ServiceLocator::setResponse($rawResponse);
         if ($subrequest) {
             \Ip\ServiceLocator::removeRequest();
         }
         return $rawResponse;
     } elseif ($rawResponse === null) {
         $response = \Ip\ServiceLocator::response();
     } else {
         \Ip\ServiceLocator::removeRequest();
         throw new \Ip\Exception('Unknown response');
     }
     if ($subrequest) {
         \Ip\ServiceLocator::removeRequest();
     }
     return $response;
 }
示例#2
0
/**
 * Get current HTML layout name
 *
 * @return string HTML layout, e.g., "main.php".
 */
function ipGetLayout()
{
    $response = \Ip\ServiceLocator::response();
    if (method_exists($response, 'getLayout')) {
        return $response->getLayout();
    } else {
        ipLog()->error('Response.cantGetLayout: Response method has no method getLayout', array('response' => $response));
    }
    return null;
}