-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
The attributesMetadata query can result in a type error being thrown:
[2023-05-18T06:39:53.610798+00:00] report.ERROR: Magento\PageBuilderPwa\Plugin\UiInputTypePageBuilder::afterGetAttributeMetadata(): Argument #2 ($result) must be of type array, null given, called in /app/vendor/magento/framework/Interception/Interceptor.php on line 146
GraphQL (2:3)
1: query {
2: attributesMetadata(
^
3: entityType: PRODUCT,
{"exception":"[object] (GraphQL\\Error\\Error(code: 0): Magento\\PageBuilderPwa\\Plugin\\UiInputTypePageBuilder::afterGetAttributeMetadata(): Argument #2 ($result) must be of type array, null given, called in /app/vendor/magento/framework/Interception/Interceptor.php on line 146 at /app/vendor/webonyx/graphql-php/src/Error/Error.php:153)
[previous exception] [object] (TypeError(code: 0): Magento\\PageBuilderPwa\\Plugin\\UiInputTypePageBuilder::afterGetAttributeMetadata(): Argument #2 ($result) must be of type array, null given, called in /app/vendor/magento/framework/Interception/Interceptor.php on line 146 at /app/vendor/magento/module-page-builder-pwa/Plugin/UiInputTypePageBuilder.php:43)"} []
[2023-05-18T06:39:53.610798+00:00] report.ERROR: Magento\PageBuilderPwa\Plugin\UiInputTypePageBuilder::afterGetAttributeMetadata(): Argument #2 ($result) must be of type array, null given, called in /app/vendor/magento/framework/Interception/Interceptor.php on line 146
The function afterGetAttributeMetadata has the $result parameter typed as array -
magento2-pwa/PageBuilderPwa/Plugin/UiInputTypePageBuilder.php
Lines 43 to 47 in ed1a13f
| public function afterGetAttributeMetadata( | |
| AttributeMetadata $subject, | |
| array $result, | |
| AttributeInterface $attribute | |
| ): array { |
However, the function it is plugging into can return void (i.e. null) -
magento2-pwa/EavGraphQlAux/Model/Resolver/DataProvider/AttributeMetadata.php
Lines 60 to 68 in ed1a13f
| * @return array|void | |
| * @throws GraphQlInputException | |
| * @throws \Magento\Framework\Exception\RuntimeException | |
| */ | |
| public function getAttributeMetadata(AttributeInterface $attribute, int $storeId, string $entityType) | |
| { | |
| if (!$attribute->getFrontendInput()) { | |
| return; | |
| } |
The plugin should handle this case by changing the input parameter type to ?array, and handling the case where it is null.
Metadata
Metadata
Assignees
Labels
No labels