示例#1
0
 public function buildView(FormView $view, FormInterface $form, array $options)
 {
     $items = array();
     if (count($options['items'])) {
         foreach ($options['items'] as $item) {
             $definition = $this->resolver->getDefinition($item);
             $items[] = array('type' => $definition->getName(), 'label' => $definition->getLabel(), 'translationDomain' => $definition->getTranslationDomain());
         }
     } else {
         foreach ($this->resolver->getItems() as $item) {
             $items[] = array('type' => $item->getName(), 'label' => $item->getLabel(), 'translationDomain' => $item->getTranslationDomain());
         }
     }
     $view->vars['items'] = $items;
 }
示例#2
0
 /**
  * Extend item type if model class differs from parent class
  *
  * @param LoadClassMetadataEventArgs $eventArgs
  */
 public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
 {
     /** @var ClassMetadata $metadata */
     $metadata = $eventArgs->getClassMetadata();
     try {
         $type = $this->resolver->getTypeByParent($metadata->getName());
         $definition = $this->resolver->getDefinition($type);
         if ($definition->getParent() !== null && $definition->getModel() !== $definition->getParent()) {
             $metadata->setInheritanceType(ClassMetadata::INHERITANCE_TYPE_SINGLE_TABLE);
             $metadata->setDiscriminatorColumn(['name' => 'discr', 'type' => 'string', 'length' => 6]);
             $metadata->addDiscriminatorMapClass('target', $definition->getParent());
             $metadata->addDiscriminatorMapClass('extend', $definition->getModel());
         }
     } catch (NoTypeFoundException $e) {
         // no match type, so nothing to do here
     }
 }