/** * @param AttributeTypeInterface|OptionAttributeTypeInterface $type * @param array $expected * @param Attribute|null $attribute * @param array $normalizationData * @dataProvider attributeTypeDataProvider */ public function testAttributeTypes(AttributeTypeInterface $type, array $expected, Attribute $attribute = null, array $normalizationData = []) { if (!$attribute) { $attribute = new Attribute(); } $this->assertEquals($expected['name'], $type->getName()); $this->assertEquals($expected['typeField'], $type->getDataTypeField()); $this->assertEquals($expected['isContainHtml'], $type->isContainHtml()); $this->assertEquals($expected['isUsedForSearch'], $type->isUsedForSearch()); $this->assertEquals($expected['isUsedInFilters'], $type->isUsedInFilters()); $this->assertEquals($expected['formParameters'], $type->getFormParameters($attribute)); $this->assertEquals($expected['requiredConstraints'], $type->getRequiredConstraints()); $this->assertEquals($expected['optionalConstraints'], $type->getOptionalConstraints()); $this->assertEquals($expected['canBeUnique'], $type->canBeUnique()); $this->assertEquals($expected['canBeRequired'], $type->canBeRequired()); if (isset($expected['defaultFormParameters'])) { $this->assertEquals($expected['defaultFormParameters'], $type->getDefaultValueFormParameters($attribute)); } $testValue = 'test'; if (!empty($normalizationData['normalize'])) { foreach ($normalizationData['normalize'] as $value) { $this->assertSame($value['to'], $type->normalize($value['from'])); } } else { $this->assertSame($testValue, $type->normalize($testValue)); } if (!empty($normalizationData['denormalize'])) { foreach ($normalizationData['denormalize'] as $value) { $this->assertSame($value['to'], $type->denormalize($value['from'])); } } else { $this->assertSame($testValue, $type->denormalize($testValue)); } }
/** * @param FormBuilderInterface $builder * @param Attribute $attribute * @param AttributeTypeInterface $attributeType */ protected function addDefaultValueField(FormBuilderInterface $builder, Attribute $attribute, AttributeTypeInterface $attributeType) { $formParameters = $attributeType->getFormParameters($attribute); if (empty($formParameters['type'])) { throw new LogicException(sprintf('Form type is required for attribute type "%s"', $attribute->getType())); } $formType = $formParameters['type']; $formOptions = !empty($formParameters['options']) ? $formParameters['options'] : []; $requiredConstraints = $attributeType->getRequiredConstraints(); if ($requiredConstraints) { $formOptions['constraints'] = $requiredConstraints; $formOptions['validation_groups'] = ['Default']; } if ($attribute->isLocalized()) { $builder->add('defaultValue', LocalizedPropertyType::NAME, ['label' => 'orob2b.attribute.default_values.label', 'required' => false, 'type' => $formType, 'options' => array_merge($formOptions, ['required' => false])]); } else { $builder->add('defaultValue', $formType, array_merge($formOptions, ['label' => 'orob2b.attribute.default_values.label', 'required' => false])); } $builder->addEventListener(FormEvents::PRE_SUBMIT, [$this, 'onPreSubmit']); }