* @license MIT License (http://www.opensource.org/licenses/mit-license.php) */ class Yaml extends File implements Driver { /** * File extension * @var string */ protected $_extension = '.dcm.yml'; /** * {@inheritDoc} */ public function readExtendedMetadata($meta, array &$config) { $mapping = $this->_getMapping($meta->name); if (isset($mapping['gedmo'])) { $classMapping = $mapping['gedmo']; if (isset($classMapping['translation']['entity'])) { $translationEntity = $classMapping['translation']['entity']; if (!class_exists($translationEntity)) { throw new InvalidMappingException("Translation entity class: {$translationEntity} does not exist."); } $config['translationClass'] = $translationEntity; } if (isset($classMapping['translation']['locale'])) { $config['locale'] = $classMapping['translation']['locale']; } elseif (isset($classMapping['translation']['language'])) { $config['locale'] = $classMapping['translation']['language']; } } if (isset($mapping['fields'])) { foreach ($mapping['fields'] as $field => $fieldMapping) { if (isset($fieldMapping['gedmo'])) { if (in_array('translatable', $fieldMapping['gedmo']) || isset($fieldMapping['gedmo']['translatable'])) { // fields cannot be overrided and throws mapping exception $config['fields'][] = $field; if (isset($fieldMapping['gedmo']['translatable']['fallback'])) { $config['fallback'][$field] = $fieldMapping['gedmo']['translatable']['fallback']; } } } } } if (!$meta->isMappedSuperclass && $config) { if (is_array($meta->identifier) && count($meta->identifier) > 1) { throw new InvalidMappingException("Translatable does not support composite identifiers in class - {$meta->name}"); } } } /** * {@inheritDoc} */ protected function _loadMappingFile($file) { return \Symfony\Component\Yaml\Yaml::parse($file); } }