/** * @param string $id Product id * * @throws NotFoundHttpException If product is not found or the user cannot see it * * @return JsonResponse */ public function getAction($id) { $product = $this->findProductOr404($id); $this->productBuilder->addMissingAssociations($product); $channels = array_keys($this->userContext->getChannelChoicesWithUserChannel()); $locales = $this->userContext->getUserLocaleCodes(); return new JsonResponse($this->normalizer->normalize($product, 'internal_api', ['locales' => $locales, 'channels' => $channels, 'filter_type' => 'pim.internal_api.product_value.view'])); }
/** * Helper method to generate field names in format : '<locale>' => '<field>|<locale>' * * @return string[] */ protected function getFieldNames() { $userLocales = $this->userContext->getUserLocaleCodes(); $collection = array(); foreach ($this->getOption('locales') as $locale) { if (in_array($locale, $userLocales)) { $collection[$locale] = $locale; } } return $collection; }
/** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { parent::configureOptions($resolver); $resolver->setRequired(['entity_class', 'translation_class', 'field', 'required_locale']); $resolver->setDefaults(['translation_class' => false, 'entity_class' => false, 'field' => false, 'locales' => $this->userContext->getUserLocaleCodes(), 'required_locale' => [], 'widget' => 'text']); }
/** * Build context for normalizer * * @return array */ protected function buildContext() { $channels = array_keys($this->userContext->getChannelChoicesWithUserChannel()); $locales = $this->userContext->getUserLocaleCodes(); return ['locales' => $locales, 'channels' => $channels, 'filter_type' => 'pim.internal_api.product_value.view', 'locale' => $this->userContext->getUiLocale()->getCode(), 'disable_grouping_separator' => true]; }
/** * {@inheritdoc} */ public function setDefaultOptions(OptionsResolverInterface $resolver) { parent::setDefaultOptions($resolver); $resolver->setRequired(array('entity_class', 'translation_class', 'field', 'required_locale')); $resolver->setDefaults(array('translation_class' => false, 'entity_class' => false, 'field' => false, 'locales' => $this->userContext->getUserLocaleCodes(), 'required_locale' => array(), 'widget' => 'text')); }