/** * @param IControlConfig $controlConfig * @return string */ public function getLabelFor(IControlConfig $controlConfig) { $label = $this->format; $fieldName = $controlConfig->getFieldName(); $className = $controlConfig->getParentClassName(); if (Nette\Utils\Strings::contains($fieldName, DotNotation\ClassMetadataWrapper::FIELD_SEPARATOR)) { $classMetadata = $this->classMetadataFactory->getMetadataFor($className); $parts = explode(DotNotation\ClassMetadataWrapper::FIELD_SEPARATOR, $fieldName); $fieldName = array_pop($parts); $association = implode(DotNotation\ClassMetadataWrapper::FIELD_SEPARATOR, $parts); $className = $classMetadata->getAssociationTargetClass($association); } $classParts = explode('\\', $className); $classParts = array_map(function ($value) { return lcfirst($value); }, $classParts); // Convert \NameSpace1\NameSpace2\ClassName to nameSpace1.nameSpace2.className $fullQualifiedClassName = trim(implode('.', $classParts), '.'); // Convert \NameSpace1\NameSpace2\ClassName to className $shortClassName = end($classParts); $label = str_replace(self::FIELD_NAME, $fieldName, $label); $label = str_replace(self::CLASS_NAME, $shortClassName, $label); $label = str_replace(self::FULL_QUALIFIED_CLASS_NAME, $fullQualifiedClassName, $label); return $label; }