diff --git a/vendor/magento/module-configurable-product/Ui/Component/Listing/AssociatedProduct/Columns/Attributes.php b/vendor/magento/module-configurable-product/Ui/Component/Listing/AssociatedProduct/Columns/Attributes.php index d8bbd8def473..ce43d8ca6e84 100644 --- a/vendor/magento/module-configurable-product/Ui/Component/Listing/AssociatedProduct/Columns/Attributes.php +++ b/vendor/magento/module-configurable-product/Ui/Component/Listing/AssociatedProduct/Columns/Attributes.php @@ -59,9 +59,15 @@ public function prepareDataSource(array $dataSource) if (isset($dataSource['data']['items'])) { $attributes = $this->getAttributes(); $fieldName = $this->getData('name'); - foreach ($dataSource['data']['items'] as & $item) { + foreach ($dataSource['data']['items'] as $key => & $item) { $attrStrings = []; foreach ($attributes as $attributeCode => $attribute) { + if ($item['required_options'] === "1") { + unset($dataSource['data']['items'][$key]); + $dataSource['data']['totalRecords']--; + continue; + } + if (isset($item[$attributeCode]) && isset($attribute['options'][$item[$attributeCode]])) { $attrStrings[] = $attribute['label'] . ': ' . $attribute['options'][$item[$attributeCode]]; } @@ -71,6 +77,7 @@ public function prepareDataSource(array $dataSource) } } + $dataSource['data']['items'] = array_values($dataSource['data']['items']); return $dataSource; } diff --git a/vendor/magento/module-grouped-product/Ui/DataProvider/Product/GroupedProductDataProvider.php b/vendor/magento/module-grouped-product/Ui/DataProvider/Product/GroupedProductDataProvider.php index 046c2d763129..5af6d515fe26 100644 --- a/vendor/magento/module-grouped-product/Ui/DataProvider/Product/GroupedProductDataProvider.php +++ b/vendor/magento/module-grouped-product/Ui/DataProvider/Product/GroupedProductDataProvider.php @@ -7,11 +7,13 @@ use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory; use Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider; -use Magento\GroupedProduct\Model\Product\Type\Grouped as GroupedProductType; +use Magento\Framework\Exception\NoSuchEntityException; use Magento\Catalog\Model\ProductTypes\ConfigInterface; use Magento\Framework\App\RequestInterface; use Magento\Store\Api\Data\StoreInterface; use Magento\Store\Api\StoreRepositoryInterface; +use Magento\Ui\DataProvider\AddFieldToCollectionInterface; +use Magento\Ui\DataProvider\AddFilterToCollectionInterface; class GroupedProductDataProvider extends ProductDataProvider { @@ -38,12 +40,12 @@ class GroupedProductDataProvider extends ProductDataProvider * @param string $requestFieldName * @param CollectionFactory $collectionFactory * @param RequestInterface $request - * @param StoreRepositoryInterface $storeRepository * @param ConfigInterface $config - * @param \Magento\Ui\DataProvider\AddFieldToCollectionInterface[] $addFieldStrategies - * @param \Magento\Ui\DataProvider\AddFilterToCollectionInterface[] $addFilterStrategies + * @param StoreRepositoryInterface $storeRepository * @param array $meta * @param array $data + * @param AddFieldToCollectionInterface[] $addFieldStrategies + * @param AddFilterToCollectionInterface[] $addFilterStrategies * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( @@ -79,6 +81,7 @@ public function __construct( * Get data * * @return array + * @throws NoSuchEntityException */ public function getData() { @@ -87,6 +90,10 @@ public function getData() 'type_id', $this->config->getComposableTypes() ); + $this->getCollection()->addAttributeToFilter( + 'required_options', + '0' + ); if ($storeId = $this->request->getParam('current_store_id')) { /** @var StoreInterface $store */ $store = $this->storeRepository->getById($storeId);