/** * Returns concatenation field-descriptor for given general metadata. * * @param GeneralPropertyMetadata $generalMetadata * @param ConcatenationTypeMetadata $type * @param array $options * * @return DoctrineConcatenationFieldDescriptor */ protected function getConcatenationFieldDescriptor(GeneralPropertyMetadata $generalMetadata, ConcatenationTypeMetadata $type, $options) { return new DoctrineConcatenationFieldDescriptor(array_map(function (FieldMetadata $fieldMetadata) use($generalMetadata, $options) { return $this->getFieldDescriptor($generalMetadata, $fieldMetadata, $options); }, $type->getFields()), $this->resolveOptions($generalMetadata->getName(), $options), $generalMetadata->getTranslation(), $this->resolveOptions($type->getGlue(), $options), $this->isDisabled($generalMetadata), $this->isDefault($generalMetadata), $generalMetadata->getType(), $generalMetadata->getWidth(), $generalMetadata->getMinWidth(), $generalMetadata->isSortable(), $generalMetadata->isEditable(), $generalMetadata->getCssClass()); }
/** * Extracts concatenation-type for property-node. * * @param \DOMXPath $xpath * @param \DOMElement $propertyNode * * @return ConcatenationTypeMetadata */ protected function getConcatenationType(\DOMXPath $xpath, \DOMElement $propertyNode) { $type = new ConcatenationTypeMetadata(XmlUtil::getValueFromXPath('@orm:glue', $xpath, $propertyNode, ' ')); foreach ($xpath->query('orm:field', $propertyNode) as $fieldNode) { if (null === ($field = $this->getField($xpath, $fieldNode))) { continue; } $type->addField($field); } return $type; }