initContainer(); $this->initPortal($portalId); $this->initAutoloads(); $this->initPreloads(); } protected function initContainer() { $this->loaderClassNames['config'] = ConfigLoader::class; $this->container = new PortalContainer(PortalContainerConfiguration::class, $this->loaderClassNames); } protected function initPortal(?string $portalId) { if (!$portalId) { throw new Error("Portal ID was not passed to Portal\Application."); } $entityManager = $this->container->get('entityManager'); $portal = $entityManager->getEntity('Portal', $portalId); if (!$portal) { $portal = $entityManager->getRepository('Portal')->where(['customId' => $portalId])->findOne(); } if (!$portal) { throw new NotFound("Portal {$portalId} not found."); } if (!$portal->get('isActive')) { throw new Forbidden("Portal {$portalId} is not active."); } $this->portal = $portal; $this->container->setPortal($portal); } protected function getPortal() { return $this->portal; } protected function initPreloads() { parent::initPreloads(); foreach ($this->getMetadata()->get(['app', 'portalContainerServices']) ?? [] as $name => $defs) { if ($defs['preload'] ?? false) { $this->container->get($name); } } } }