_productFactory = $conditionFactory; parent::__construct($context, $data); $this->setType(\Magento\CatalogRule\Model\Rule\Condition\Combine::class); } /** * @return array */ public function getNewChildSelectOptions() { $productAttributes = $this->_productFactory->create()->loadAttributeOptions()->getAttributeOption(); $attributes = []; foreach ($productAttributes as $code => $label) { $attributes[] = [ 'value' => 'Magento\CatalogRule\Model\Rule\Condition\Product|' . $code, 'label' => $label, ]; } $conditions = parent::getNewChildSelectOptions(); $conditions = array_merge_recursive( $conditions, [ [ 'value' => \Magento\CatalogRule\Model\Rule\Condition\Combine::class, 'label' => __('Conditions Combination'), ], ['label' => __('Product Attribute'), 'value' => $attributes] ] ); return $conditions; } /** * @param array $productCollection * @return $this */ public function collectValidatedAttributes($productCollection) { foreach ($this->getConditions() as $condition) { /** @var Product|Combine $condition */ $condition->collectValidatedAttributes($productCollection); } return $this; } }