getItemById($ItemId) для модели котировок Magento не работает должным образом в Magento 2
Вот мой код, в котором я вызываю файл модели цитаты и функцию getItemById
.
public function __construct(
\Magento\Quote\Model\Quote $quote
) {
$this->quote = $quote;
}
$itemId = "Quote Item ID";
$data = $this->quote->getItemById($itemId);
Приведенный выше код возвращает FALSE
- даже существует 65 пунктов котировок!
Поэтому я проверил Метод ядра Magento getItemById
в -
/vendor/magento/module-quote/Model/Quote.php
/**
* Retrieve item model object by item identifier
*
* @param int $itemId
* @return \Magento\Quote\Model\Quote\Item|false
*/
public function getItemById($itemId)
{
foreach ($this->getItemsCollection() as $item) {
if ($item->getId() == $itemId) {
return $item;
}
}
return false;
}
Если я напечатаю $this->getItemsCollection()->getData()
, то он вернет массивы элементов 65.
Но как Magento, проходящий непосредственно объект коллекции $this->getItemsCollection()
в foreach
Таким образом, не входит в цикл foreach, который является ожидаемым результатом.
Это ошибка Magento или я делаю что-то не так?
Отредактированный
Проблема с файлом модели котировок Magento все еще открыта.
/vendor/magento/module-quote/Model/Quote.php
В качестве ответа Рохана Хапани мы получаем данные от \Magento\Quote\Model\Quote\Item
На данный момент.
Но для получения Magento getitembyid все еще требуется должно быть исправлено.
/vendor/magento/module-quote/Model/Quote.php
/**
* Retrieve item model object by item identifier
*
* @param int $itemId
* @return \Magento\Quote\Model\Quote\Item|false
*/
public function getItemById($itemId)
{
foreach ($this->getItemsCollection() as $item) {
if ($item->getId() == $itemId) {
return $item;
}
}
return false;
}
Так что откройтесь для решений:)
2 answers
Попробуйте использовать следующий код:
/**
* @var \Magento\Quote\Model\Quote\Item
*/
protected $_itemModel;
public function __construct(
.........
\Magento\Quote\Model\Quote\Item $itemModel
.........
)
{
.........
$this->_itemModel = $itemModel;
.........
}
public function yourFunction()
{
$itemId = "Quote Item ID";
$this->_itemModel->load($itemId);
}
Вместо того, чтобы вводить \Magento\Цитата\Модель\Цитата класс в конструкторе, попробуйте ввести \Magento\Проверка\Модель\Сеанс, а затем
$quote = $this->_session->getQuote();
Это предполагает, что ваш код работает с активным сеансом проверки интерфейса