public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data) { $fieldDefinition = $data->fieldDefinition; $formConfig = $fieldForm->getConfig(); $names = $fieldDefinition->getNames(); $label = $fieldDefinition->getName($formConfig->getOption('languageCode')) ?: reset($names); $fieldForm->add($formConfig->getFormFactory()->createBuilder()->create('value', CheckboxType::class, ['required' => $fieldDefinition->isRequired, 'label' => $label])->addModelTransformer(new FieldValueTransformer($this->fieldTypeService->getFieldType($fieldDefinition->fieldTypeIdentifier)))->setAutoInitialize(false)->getForm()); }
/** * Maps Repository Field to the Site Field. * * @param \eZ\Publish\API\Repository\Values\Content\Field $field * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType * * @return mixed|\Netgen\EzPlatformSiteApi\API\Values\Field */ private function mapFieldData(APIField $field, ContentType $contentType) { $fieldDefinition = $contentType->getFieldDefinition($field->fieldDefIdentifier); $fieldTypeIdentifier = $fieldDefinition->fieldTypeIdentifier; $isEmpty = $this->fieldTypeService->getFieldType($fieldTypeIdentifier)->isEmptyValue($field->value); return ['isEmpty' => $isEmpty, 'innerField' => $field]; }
/** * Parses the given $configurationHash using the FieldType identified by * $fieldTypeIdentifier. * * @param string $fieldTypeIdentifier * @param mixed $configurationHash * * @return mixed */ public function parseValidatorConfiguration($fieldTypeIdentifier, $configurationHash) { if ($this->fieldTypeProcessorRegistry->hasProcessor($fieldTypeIdentifier)) { $fieldTypeProcessor = $this->fieldTypeProcessorRegistry->getProcessor($fieldTypeIdentifier); $configurationHash = $fieldTypeProcessor->preProcessValidatorConfigurationHash($configurationHash); } $fieldType = $this->fieldTypeService->getFieldType($fieldTypeIdentifier); return $fieldType->validatorConfigurationFromHash($configurationHash); }
public function buildForm(FormBuilderInterface $builder, array $options) { $translatablePropertyTransformer = new TranslatablePropertyTransformer($options['languageCode']); $builder->add($builder->create('name', 'text', ['property_path' => 'names', 'label' => 'field_definition.name'])->addModelTransformer($translatablePropertyTransformer))->add('identifier', 'text', ['label' => 'field_definition.identifier'])->add($builder->create('description', 'text', ['property_path' => 'descriptions', 'required' => false, 'label' => 'field_definition.description'])->addModelTransformer($translatablePropertyTransformer))->add('isRequired', 'checkbox', ['required' => false, 'label' => 'field_definition.is_required'])->add('isTranslatable', 'checkbox', ['required' => false, 'label' => 'field_definition.is_translatable'])->add('fieldGroup', 'choice', ['choices' => []], ['required' => false, 'label' => 'field_definition.field_group'])->add('position', 'integer', ['label' => 'field_definition.position'])->add('selected', 'checkbox', ['required' => false, 'mapped' => false]); // Hook on form generation for specific FieldType needs $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { /** @var \EzSystems\RepositoryForms\Data\FieldDefinitionData $data */ $data = $event->getData(); $form = $event->getForm(); $fieldTypeIdentifier = $data->getFieldTypeIdentifier(); $fieldType = $this->fieldTypeService->getFieldType($fieldTypeIdentifier); // isSearchable field should be present only if the FieldType allows it. $form->add('isSearchable', 'checkbox', ['required' => false, 'disabled' => !$fieldType->isSearchable(), 'label' => 'field_definition.is_searchable']); // Let fieldType mappers do their jobs to complete the form. if ($this->fieldTypeMapperRegistry->hasMapper($fieldTypeIdentifier)) { $mapper = $this->fieldTypeMapperRegistry->getMapper($fieldTypeIdentifier); $mapper->mapFieldDefinitionForm($form, $data); } }); }
/** * Checks if provided field can be considered empty. * * @param \eZ\Publish\API\Repository\Values\Content\Content $content * @param string $fieldDefIdentifier * @param null $forcedLanguage * * @return bool */ public function isFieldEmpty(Content $content, $fieldDefIdentifier, $forcedLanguage = null) { $field = $this->translationHelper->getTranslatedField($content, $fieldDefIdentifier, $forcedLanguage); $fieldDefinition = $this->getFieldDefinition($content->contentInfo, $fieldDefIdentifier); return $this->fieldTypeService->getFieldType($fieldDefinition->fieldTypeIdentifier)->isEmptyValue($field->value); }
/** * Returns the field type with $fieldTypeIdentifier. * * @param string $fieldTypeIdentifier * * @return \eZ\Publish\API\Repository\FieldType */ protected function getFieldType($fieldTypeIdentifier) { return $this->fieldTypeService->getFieldType($fieldTypeIdentifier); }
/** * Returns the FieldType registered with the given identifier * * @param string $identifier * * @return \eZ\Publish\API\Repository\FieldType * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException * if there is no FieldType registered with $identifier */ public function getFieldType($identifier) { return $this->service->getFieldType($identifier); }