/** * @param string $name * * @return TaxonInterface */ private function createTaxon($name) { /** @var TaxonInterface $taxon */ $taxon = $this->taxonFactory->createNew(); $taxon->setName($name); $taxon->setCode(StringInflector::nameToCode($name)); $taxon->setSlug($this->taxonSlugGenerator->generate($name)); return $taxon; }
/** * {@inheritdoc} */ protected function configureOptions(OptionsResolver $resolver) { $resolver->setDefault('name', function (Options $options) { return $this->faker->words(3, true); })->setDefault('code', function (Options $options) { return StringInflector::nameToCode($options['name']); })->setDefault('slug', function (Options $options) { return $this->taxonSlugGenerator->generate($options['name']); })->setDefault('description', function (Options $options) { return $this->faker->paragraph; })->setDefault('children', [])->setAllowedTypes('children', ['array']); }
/** * @param array $names * * @return TaxonInterface */ private function createTaxonInManyLanguages(array $names) { /** @var TaxonInterface $taxon */ $taxon = $this->taxonFactory->createNew(); $taxon->setCode(StringInflector::nameToCode($names['en_US'])); foreach ($names as $locale => $name) { /** @var TranslationInterface $taxonTranslation */ $taxonTranslation = $this->taxonTranslationFactory->createNew(); $taxonTranslation->setLocale($locale); $taxonTranslation->setName($name); $taxonTranslation->setSlug($this->taxonSlugGenerator->generate($name)); $taxon->addTranslation($taxonTranslation); } return $taxon; }
/** * {@inheritdoc} */ public function create(array $options = []) { $options = $this->optionsResolver->resolve($options); /** @var TaxonInterface $taxon */ $taxon = $this->taxonRepository->findOneBy(['code' => $options['code']]); if (null === $taxon) { $taxon = $this->taxonFactory->createNew(); } $taxon->setCode($options['code']); foreach ($this->getLocales() as $localeCode) { $taxon->setCurrentLocale($localeCode); $taxon->setFallbackLocale($localeCode); $taxon->setName($options['name']); $taxon->setDescription($options['description']); $taxon->setSlug($this->taxonSlugGenerator->generate($options['name'])); } foreach ($options['children'] as $childOptions) { $taxon->addChild($this->create($childOptions)); } return $taxon; }