/** * {@inheritDoc} */ public function finishView(FormView $view, FormInterface $form, array $options) { $formParent = $form->getParent(); if (!$formParent) { return; } /* @var $productUnitHolder ProductUnitHolderInterface */ $productUnitHolder = $formParent->getData(); if (!$productUnitHolder) { return; } $product = $productUnitHolder->getProductHolder()->getProduct(); $choices = $this->getProductUnits($product); $productUnit = $productUnitHolder->getProductUnit(); if (!$productUnit || $product && !in_array($productUnit, $choices, true)) { $emptyValueTitle = $this->translator->trans($this->options['empty_label'], ['{title}' => $productUnitHolder->getProductUnitCode()]); $view->vars['empty_value'] = $emptyValueTitle; } $choices = $this->productUnitFormatter->formatChoices($choices, $options['compact']); $choicesViews = []; foreach ($choices as $key => $value) { $choicesViews[] = new ChoiceView($value, $key, $value); } $view->vars['choices'] = $choicesViews; }
protected function getFreeFormUnits() { $units = $this->registry->getRepository($this->productUnitClass)->findBy([], ['code' => 'ASC']); $units = $this->productUnitFormatter->formatChoices($units); return $units; }
/** * @param bool $isShort * @param array $expected * * @dataProvider formatChoicesProvider */ public function testFormatChoices($isShort, array $expected) { $units = [(new ProductUnit())->setCode('kg'), (new ProductUnit())->setCode('item')]; $this->translator->expects($this->exactly(2))->method('trans')->will($this->returnValueMap([['orob2b.product_unit.kg.label.full', [], null, null, '_KG'], ['orob2b.product_unit.item.label.full', [], null, null, '_ITEM'], ['orob2b.product_unit.kg.label.short', [], null, null, '_KG_SHORT'], ['orob2b.product_unit.item.label.short', [], null, null, '_ITEM_SHORT']])); $this->assertEquals($expected, $this->formatter->formatChoices($units, $isShort)); }