/**
  * Adds new attribute value using ajax request
  *
  * @param Request $request
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function ajaxAddAction(Request $request)
 {
     if (!$request->isXmlHttpRequest()) {
         return $this->redirectToAction('index');
     }
     $attributeName = $request->request->get('name');
     $attributeGroupId = (int) $request->request->get('set');
     try {
         $attribute = $this->manager->createAttribute($attributeName, $attributeGroupId);
         return $this->jsonResponse(['id' => $attribute->getId()]);
     } catch (\Exception $e) {
         return $this->jsonResponse(['error' => $e->getMessage()]);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function findOrCreate($data, AttributeGroupInterface $group)
 {
     $id = $this->propertyAccessor->getValue($data, '[id]');
     $name = $this->propertyAccessor->getValue($data, '[name]');
     $values = $this->propertyAccessor->getValue($data, '[values]');
     $attribute = $this->attributeManager->getAttribute($id, $name, $group);
     if (!empty($values)) {
         $valuesCollection = new ArrayCollection();
         foreach ($values as $value) {
             $attributeValue = $this->attributeValueManager->getAttributeValue($value['id'], $value['name'], $attribute);
             $valuesCollection->add($attributeValue);
         }
         $this->synchronizeCollection($attribute->getValues(), $valuesCollection);
         $attribute->setValues($valuesCollection);
     }
     return $attribute;
 }