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