/** * @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); } }
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; }