예제 #1
0
파일: Container.php 프로젝트: watoki/curir
 /**
  * @param Request|WebRequest $request
  * @throws error\HttpError
  * @return WebResponse
  */
 public function respond(Request $request)
 {
     if ($this->isContainerTarget($request)) {
         return ObjectTarget::factory($this->factory, $this)->create($request)->respond();
     }
     try {
         return $this->router->route($request)->respond();
     } catch (TargetNotFoundException $e) {
         return $this->tryToRouteInParentClass($request, $e);
     }
 }
예제 #2
0
파일: Box.php 프로젝트: watoki/boxes
 public function dispatch(WebRequest $request, Router $router)
 {
     $arguments = $request->getArguments();
     $request->setTarget($this->target);
     if ($arguments->isEmpty()) {
         $arguments->merge($this->arguments);
         $request->setMethod(WebRequest::METHOD_GET);
     } else {
         if ($arguments->has(self::$TARGET_KEY)) {
             $request->setTarget(Path::fromString($arguments->get(self::$TARGET_KEY)));
         }
         if ($arguments->has(WebRequest::$METHOD_KEY)) {
             $request->setMethod($arguments->get(WebRequest::$METHOD_KEY));
         } else {
             $request->setMethod(WebRequest::METHOD_GET);
         }
     }
     $this->response = $router->route($request)->respond();
     if ($this->response->getHeaders()->has(WebResponse::HEADER_LOCATION)) {
         throw new WrappedRedirection($this->response->getHeaders()->get(WebResponse::HEADER_LOCATION));
     }
     return $request;
 }