/** * Ensure at least one option for the attribute * * @param AbstractAttribute $entity */ protected function ensureOneOption(AbstractAttribute $entity) { $selectTypes = array('pim_catalog_simpleselect', 'pim_catalog_multiselect'); if (in_array($entity->getAttributeType(), $selectTypes) && count($entity->getOptions()) < 1) { $option = $this->attributeManager->createAttributeOption(); $option->setTranslatable(true); $entity->addOption($option); } }
/** * 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. * * @return \Pim\Bundle\CatalogBundle\Entity\AttributeOption */ public function createAttributeOption() { return $this->baseAttributeManager->createAttributeOption(); }