/** * {@inheritdoc} */ public function validate($value, Constraint $constraint) { if (!$value instanceof PageInterface) { $this->context->addViolation('The page is not valid, expected a PageInterface'); return; } if (!$value->getSite() instanceof SiteInterface) { $this->context->addViolation('The page is not linked to a Site'); return; } // do not validated error page if ($value->isError()) { return; } $this->manager->fixUrl($value); $pages = $this->manager->findBy(array('site' => $value->getSite(), 'url' => $value->getUrl())); foreach ($pages as $page) { if ($page->isError() || $page->isInternal()) { continue; } if ($page->getUrl() == $value->getUrl() && $page != $value) { $this->context->addViolation('error.uniq_url', array('%url%' => $value->getUrl())); } } }
/** * {@inheritdoc} */ public function prePersist($object) { $object->setEdited(true); foreach ($object->getTranslations() as $t) { $t->setObject($object); } $this->pageManager->fixUrl($object); }