/** * @param VirtualBusinessPage $page * @param BusinessTemplate $businessTemplate * @param array $businessProperties * @param EntityManager $em * @param $entity * * @throws IdentifierNotDefinedException * @throws \Exception * * @return VirtualBusinessPage */ private function populatePage(VirtualBusinessPage $page, BusinessTemplate $businessTemplate, array $businessProperties, EntityManager $em, $entity) { $pageName = $businessTemplate->getName(); $pageSlug = $businessTemplate->getSlug(); $page->setSlug($pageSlug); $page->setName($pageName); $pageUrl = $this->urlBuilder->buildUrl($page); //parse the business properties foreach ($businessProperties as $businessProperty) { $pageUrl = $this->parameterConverter->setBusinessPropertyInstance($pageUrl, $businessProperty, $entity); $pageSlug = $this->parameterConverter->setBusinessPropertyInstance($pageSlug, $businessProperty, $entity); $pageName = $this->parameterConverter->setBusinessPropertyInstance($pageName, $businessProperty, $entity); } //Check that all twig variables in pattern url was removed for it's generated BusinessPage preg_match_all('/\\{\\%\\s*([^\\%\\}]*)\\s*\\%\\}|\\{\\{\\s*([^\\}\\}]*)\\s*\\}\\}/i', $pageUrl, $matches); if (count($matches[2])) { throw new IdentifierNotDefinedException($matches[2]); } $page->setUrl($pageUrl); $page->setSlug($pageSlug); $page->setName($pageName); $page->setReference($this->viewReferenceBuilder->buildViewReference($page, $em)); return $page; }