Как вызвать WebAPI внутренне
У меня есть API, который должен вызывать /V1/тележки/мои/предметы, нет смысла вызывать его через curl, могу ли я вызвать то же самое напрямую?
В webapi.xml говорит:
<route url="/V1/carts/mine/items" method="POST">
<service class="Magento\Quote\Api\CartItemRepositoryInterface" method="save"/>
Di.xml говорит:
<preference for="Magento\Quote\Api\CartItemRepositoryInterface" type="Magento\Quote\Model\Quote\Item\Repository" />
Теперь в репозитории Magento\Цитата\Модель\Цитата\Элемент\написано:
Сохранение общедоступной функции (\Magento\Цитата\Api\Данные\Cartiteminterface$CartItem)
Поэтому вам нужно передать объекту реализации: \Magento\Quote\Api\Data\Cartiteminterface
Я у вас есть массив, который необходим для вышеупомянутого вызова, но, очевидно, вызов не будет работать.
И скажет
Фатальная ошибка: 'Неперехваченная ошибка типа: Аргумент 1 передан в Magento\Цитата\Модель\Цитата\Элемент\Репозиторий::сохранить() должен реализовывать интерфейс Magento\Цитата\Api\Данные\Cartiteminterface, массив задан
Какие у меня есть варианты?
1 answers
Взгляните на хороший пример здесь: https://github.com/magento/magento2/blob/develop/dev/tests/integration/testsuite/Magento/Sales/_files/order_info.php#L58
Вы должны использовать Magento\Quote\Api\Data\CartItemInterfaceFactory
для создания объекта CartItem, затем установить данные из имеющегося у вас массива и, наконец, передать их в Magento\Quote\Api\CartItemRepositoryInterface::save