/**
  * {@inheritdoc}
  */
 public function buildView(FormView $view, FormInterface $form, array $options)
 {
     $vars = array('configs' => $options['configs']);
     if ($form->getData()) {
         $fieldConfig = $this->entityManager->getExtendManager()->getConfigProvider()->getConfig($form->getParent()->getData(), $form->getName());
         $fieldName = $fieldConfig->get('target_field');
         $vars['attr'] = array('data-entities' => json_encode(array(array($fieldName => $form->getData()->{'get' . ucfirst($fieldName)}()))));
     }
     $view->vars = array_replace_recursive($view->vars, $vars);
 }
 /**
  * {@inheritdoc}
  */
 public function search($query, $page, $perPage)
 {
     list($query, $targetEntity, $targetField) = explode(',', $query);
     $this->entityName = str_replace('_', '\\', $targetEntity);
     $fieldConfig = $this->entityManager->getExtendManager()->getConfigProvider()->getConfig($this->entityName, $targetField);
     if ($fieldConfig->is('owner', ExtendManager::OWNER_CUSTOM)) {
         $this->isCustomField = true;
     }
     $this->fieldName = $targetField;
     return $this->formatResult($this->searchEntities($query, $targetField));
 }
 protected function checkRelation($targetClass, $fieldId)
 {
     $extendProvider = $this->em->getExtendManager()->getConfigProvider();
     $targetConfig = $extendProvider->getConfig($targetClass);
     $relations = $targetConfig->get('relation') ?: [];
     $schema = $targetConfig->get('schema') ?: [];
     foreach ($relations as &$relation) {
         if ($relation['target_field_id'] == $fieldId) {
             $relation['assign'] = true;
             $relationFieldId = $relation['field_id'];
             if ($relationFieldId && count($schema)) {
                 $schema['relation'][self::FIELD_PREFIX . $relationFieldId->getFieldName()] = $relationFieldId->getFieldName();
             }
         }
     }
     $targetConfig->set('relation', $relations);
     $targetConfig->set('schema', $schema);
     $extendProvider->persist($targetConfig);
 }