/** * @return ModelAndView **/ public function handleRequest(HttpRequest $request) { Assert::isNotEmptyArray($this->innerControllers, 'Add atleast one innerController first'); $activeController = $this->getActiveController($request); $model = $this->mav->getModel(); if ($activeController) { $controllerName = $activeController->getName(); $activeMav = $activeController->handleRequest($request); $model->set(TextUtils::downFirst($controllerName), $activeMav->getModel()); unset($this->innerControllers[$controllerName]); } foreach ($this->innerControllers as $controller) { $passedRequest = clone $request; $passedRequest->{'set' . $controller->getRequestGetter() . 'Var'}('action', null); $subMav = $controller->handleRequest($passedRequest); $model->set(TextUtils::downFirst($controller->getName()), $subMav->getModel()); } return isset($activeMav) && $activeMav->viewIsRedirect() ? $activeMav : $this->mav; }