/** * Add missing attribute option values * * @param AbstractAttribute $entity */ protected function addMissingOptionValues(AbstractAttribute $entity) { $this->ensureOneOption($entity); $locales = $this->getLocaleCodes(); foreach ($entity->getOptions() as $option) { if ($option->isTranslatable()) { $existingLocales = array(); foreach ($option->getOptionValues() as $value) { $existingLocales[] = $value->getLocale(); } foreach ($locales as $locale) { if (!in_array($locale, $existingLocales)) { $optionValue = $this->attributeManager->createAttributeOptionValue(); $optionValue->setLocale($locale); $optionValue->setValue(''); $option->addOptionValue($optionValue); } } } } }
/** * Create a new option for a simple/multi-select attribute * * @param Request $request * @param integer $id * @param string $dataLocale * * @Template("PimEnrichBundle:Attribute:form_options.html.twig") * @AclAncestor("pim_enrich_attribute_edit") * @return Response */ public function createOptionAction(Request $request, $id, $dataLocale) { $attribute = $this->findAttributeOr404($id); if (!$request->isXmlHttpRequest() || !in_array($attribute->getAttributeType(), $this->choiceAttributeTypes)) { return $this->redirectToRoute('pim_enrich_attribute_edit', array('id' => $attribute->getId())); } $option = $this->attributeManager->createAttributeOption(); $optionValue = $this->attributeManager->createAttributeOptionValue(); $optionValue->setLocale($dataLocale); $optionValue->setValue(''); $option->addOptionValue($optionValue); $attribute->addOption($option); $form = $this->createForm('pim_attribute_option_create', $option); if ($request->isMethod('POST')) { $form->submit($request); if ($form->isValid()) { $this->persist($option); $response = array('status' => 1, 'option' => array('id' => $option->getId(), 'label' => $option->setLocale($dataLocale)->__toString())); return new Response(json_encode($response)); } } return array('attribute' => $attribute, 'form' => $form->createView()); }
/** * Create an attribute option value. * * @return \Pim\Bundle\CatalogBundle\Entity\AttributeOptionValue */ public function createAttributeOptionValue() { return $this->baseAttributeManager->createAttributeOptionValue(); }