configFactory = $configFactory->create(); $this->yesno = $yesno; $this->country = $country; $this->allregion = $allregion; $this->allShippingMethods = $allShippingMethods; $this->allPaymentMethods = $allPaymentMethods; $this->sourceGroup = $group; } /** * Get element type. * * @param string $attribute * * @return string */ public function getValueElementType($attribute) { switch ($attribute) { case 'method': case 'shipping_method': case 'country_id': case 'region_id': case 'customer_group_id': return 'select'; default: $attribute = $this->configFactory->getAttribute( 'catalog_product', $attribute ); if ($attribute->usesSource()) { return 'select'; } } return 'text'; } /** * Get options array. * * @param string $attribute * @param bool $isEmpty * * @return array */ public function getValueSelectOptions($attribute, $isEmpty = false) { $options = []; if ($isEmpty) { $options = $this->yesno->toOptionArray(); return $options; } switch ($attribute) { case 'country_id': $options = $this->country->toOptionArray(); break; case 'region_id': $options = $this->allregion->toOptionArray(); break; case 'shipping_method': $options = $this->allShippingMethods->toOptionArray(); break; case 'method': $options = $this->allPaymentMethods->toOptionArray(); break; case 'customer_group_id': $options = $this->sourceGroup->toOptionArray(); break; default: $attribute = $this->configFactory->getAttribute( 'catalog_product', $attribute ); if ($attribute->usesSource()) { $options = $attribute->getSource()->getAllOptions(); } } return $options; } /** * Options array. * * @return array */ public function toOptionArray() { return $this->allPaymentMethods->toOptionArray(); } }