コード例 #1
0
 /**
  * Ensure that there is an option for all activated locales
  *
  * @param Collection $optionValues
  *
  * @return Collection
  */
 protected function ensureEmptyOptionValues(Collection $optionValues)
 {
     $activeLocales = $this->getActiveLocales();
     $usedLocales = [];
     foreach ($optionValues as $optionValue) {
         $usedLocales[] = $optionValue->getLocale();
     }
     foreach ($activeLocales as $activatedLocale) {
         if (!in_array($activatedLocale->getCode(), $usedLocales)) {
             $attributeOptionValue = $this->optionManager->createAttributeOptionValue();
             $attributeOptionValue->setLocale($activatedLocale->getCode());
             $attributeOptionValue->setValue('');
             $optionValues->add($attributeOptionValue);
         }
     }
     return $optionValues;
 }
コード例 #2
0
 /**
  * Create a new option for a simple/multi-select attribute
  *
  * @param Request $request
  * @param int     $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', ['id' => $attribute->getId()]);
     }
     $option = $this->optionManager->createAttributeOption();
     $optionValue = $this->optionManager->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->optionSaver->save($option);
             $response = ['status' => 1, 'option' => ['id' => $option->getId(), 'label' => $option->setLocale($dataLocale)->__toString()]];
             return new Response(json_encode($response));
         }
     }
     return ['attribute' => $attribute, 'form' => $form->createView()];
 }