/** * @param string $viewName * * @return View|ViewInterface * @throws \Exception */ protected function createView($viewName) { $view = new View(); $view->setName($viewName); $view->setAuthService($this->getAuthServiceVerify()); $view->setAclService($this->getAclServiceVerify()); $view->setLogicService($this->getLogicServiceVerify()); $view->setConfigService($this->getConfigServiceVerify()); $viewConfig = $this->getConfigServiceVerify()->getByObject($view->getName(), new ViewConfig()); if ($viewConfig == null) { throw new \Exception('Please fill ViewConfig for the ' . $view->getName() . '. I can\'t work on'); } $view->setViewConfig($viewConfig); $view->setModelService($this->getModelServiceVerify()); // info about model - how it is organized. it will be useful $parsedModelConfig = $this->getModelServiceVerify()->getParsedModelConfig($viewConfig->model); $view->setParsedModelConfig($parsedModelConfig); // model view should deal with acl enabled model $aclModel = $this->getAclServiceVerify()->getAclDataModel($viewConfig->model); // primary gateway for data ops $gateway = $this->getGatewayServiceVerify()->get($viewConfig->model, $aclModel); $view->setGateway($gateway); $view->setGatewayService($this->getGatewayServiceVerify()); $view->setFormService($this->getFormServiceVerify()); $view->setConfigService($this->getConfigServiceVerify()); $view->setQueryService($this->getQueryServiceVerify()); $view->setFileService($this->getFileServiceVerify()); $view->setFilesystemService($this->getFilesystemServiceVerify()); $view->setPDFService($this->getPDFServiceVerify()); $view->setTwigService($this->getTwigServiceVerify()); $view->setListParamsService($this->getListParamsServiceVerify()); $view->init(); return $view; }