protected function createAdvertDetailsForm(Advertisement $advert, $fill = false) { $adModel = $this->get(C::MODEL_ADVERTISEMENT); $options[C::FORM_ATTRIBUTE_LIST] = $adModel->getAttributesByProductId($advert->getProduct()->getId()); if ($fill) { foreach ($advert->getAttributes() as $attribute) { $options[AbstractAttribute::FORM_PREFIX . $attribute->getAttribute()->getId()] = $attribute->getValue(); } } $form = $this->createForm(FillAdvertForm::class, $options); return $form; }
/** * @param Advertisement $advertisement * @return array * возвращает ассоциаптиыный массив для страницы просмотра advert ['attrName' => attrValue] */ public function getAdvertAttributesArray(Advertisement $advertisement) { $result = []; $allAttributes = $this->getAttributesByProductId($advertisement->getProduct()->getId()); foreach ($allAttributes as $attribute) { $result[$attribute->getName()] = 'Не указано'; } foreach ($advertisement->getAttributes() as $advertAttribute) { $attrName = $advertAttribute->getAttribute()->getName(); if ($advertAttribute->getAttribute()->getType() === ProductAttribute::ATTRIBUTE_TYPE_REFERENCE) { $result[$attrName] = is_null($advertAttribute->getValue()) ? 'Не указано' : $this->getReferenceItem($advertAttribute->getValue())->getName(); } else { $result[$attrName] = is_null($advertAttribute->getValue()) ? 'Не указано' : $advertAttribute->getValue(); } } return $result; }