Example #1
0
 /**
  * Build errormessages and add rules
  *
  * @param $modelName
  * @return $this
  */
 public function getFormFieldValidation($modelName)
 {
     $formField = $this->formField->setClassName($modelName);
     $errorMessages = [];
     $defaultLocale = $this->locale->getDefaultLocale();
     foreach ($formField->getFields() as $field => $annotation) {
         if (isset($annotation['validation'])) {
             foreach ($annotation['validation'] as $validationRule) {
                 $value = isset($this->fieldsArray[$field]) ? $this->fieldsArray[$field] : '';
                 $formFieldAnnotationTranslation = $formField->getAnnotation($annotation['annotations'], 'Gedmo\\Mapping\\Annotation\\Translatable');
                 if (false !== $formFieldAnnotationTranslation && is_array($value)) {
                     $translation = isset($value[$defaultLocale->locale]) ? $value[$defaultLocale->locale] : '';
                     $this->fieldsArray[$field] = $translation;
                     // set default translation
                     $errorMessages[$field][$validationRule] = $formField->getErrorMessage($field, $translation, $modelName, $validationRule);
                 } elseif (is_array($value)) {
                     $errorMessages[$field][$validationRule] = $formField->getErrorMessage($field, implode(',', $value), $modelName, $validationRule);
                 } elseif (is_string($value)) {
                     $errorMessages[$field][$validationRule] = $formField->getErrorMessage($field, $value, $modelName, $validationRule);
                 }
                 if ($validationRule === 'unique' && !isset($this->fieldsArray['id'])) {
                     $this->addRule($field, [$this->formField, 'uniqueEntityCheck'], [$modelName, $field]);
                 } elseif ($validationRule !== 'unique') {
                     $this->addRule($field, $validationRule);
                 }
             }
         }
     }
     $this->setErrorMessages($errorMessages);
     return $this;
 }
Example #2
0
 /**
  * @param $xml
  * @return mixed
  */
 public function execBlock($xml)
 {
     $languageMenu = array();
     $currentLocale = $this->locale->getLocale()->id;
     $defaultLocale = $this->locale->getDefaultLocale();
     $currentMenuItem = $this->route->getCurrentMenuItem();
     $locales = $this->db->getRepository('\\Fraym\\Locale\\Entity\\Locale')->findAll();
     foreach ($currentMenuItem->translations as $translation) {
         $url = $translation->url === '' ? '/' : $translation->url;
         $languageMenu[$translation->locale->id] = array('url' => $url, 'active' => $translation->locale->id === $currentLocale, 'name' => $translation->locale->name);
     }
     foreach ($locales as $locale) {
         if (!isset($languageMenu[$locale->id])) {
             $menuItem = $currentMenuItem;
             do {
                 $m = $menuItem->parent;
                 if ($m) {
                     $menuItem = $m;
                 }
             } while ($m);
             foreach ($menuItem->translations as $mTranslation) {
                 if ($mTranslation->locale->id === $locale->id) {
                     $url = $mTranslation->url;
                     break;
                 } elseif ($mTranslation->locale->id === $defaultLocale->id) {
                     $url = $mTranslation->url;
                 }
             }
             $languageMenu[$locale->id] = array('url' => $url === '' ? '/' : $url, 'active' => $locale->id === $currentLocale, 'name' => $locale->name);
         }
     }
     $this->languageMenuController->renderHtml($languageMenu);
 }
Example #3
0
 /**
  * @return $this
  * @throws \Exception
  */
 public function setUpTranslateable()
 {
     $defaultLocale = $this->locale->getDefaultLocale();
     if ($defaultLocale === null) {
         throw new \Exception('Default locale not found! Fraym is not correctly installed, please reinstall Fraym.');
     }
     $this->translatableListener = new \Gedmo\Translatable\TranslatableListener();
     $this->translatableListener->setDefaultLocale($defaultLocale->locale);
     $this->translatableListener->setAnnotationReader($this->cachedAnnotationReader);
     $this->translatableListener->setTranslationFallback(true);
     $this->translatableListener->setPersistDefaultLocaleTranslation(true);
     $this->eventManager->addEventSubscriber($this->translatableListener);
     return $this;
 }