API REST Magento 2 возвращает только категорию по умолчанию и ее дочерние элементы
Я использую "отдых/V1/категории/" (API Rest для Magento 2). В документации(devdocs.magento.com/swagger /#) в нем написано "Получить список категорий", но он каждый раз возвращает только категорию по умолчанию (и все ее дочерние элементы). Как я могу получить список всех категорий (тех, которые являются родительскими, включая по умолчанию)
Вот как я это делаю,
public function getCatagory($data){
$response = array();
if(isset($data['categoryId'])){
$url = $this->baseUrl."rest/V1/categories/".$data['categoryId'];
$response = $this->curlGet($url,$this->token);
}else{
$url = $this->baseUrl."rest/V1/categories/";
$response = $this->curlGet($url,$this->token);
}
return $response;
}
Я выполняю здесь другую часть "отдых/V1/категории/", и я получаю,
{
"id": 2,
"parent_id": 1,
"name": "Default Category",
"is_active": true,
"position": 1,
"level": 1,
"product_count": 0,
"children_data": [
]
}
Это только давая мне значение по умолчанию, почему отсутствуют другие категории, как показано на прикрепленном изображении панели администратора. Пожалуйста, помогите!! Спасибо, я заранее (я не хочу, чтобы все мои категории по умолчанию были детьми, я знаю, что это выход, но я уже сделал каждого из них родителем, как они показаны на прикрепленных изображениях, теперь я просто хочу их забрать).
4 answers
Ну, вы можете легко получить все ваши категории, передав "все" ключевое слово в ваших категориях, получите URL API
Он предоставит вам все категории, включая все ваши корневые категории.
Попробуйте выполнить следующие шаги:
- Ваш URL-адрес Api - http://test.com/index.php/rest/all/V1/categories
- Ваш Метод Api - Получить
- Ваши заголовки должны быть - Носитель авторизации youradminaccesстокен
Примечание: Убедитесь, что вы передали все ключевые слова в Url, и это будет работать
Это поможет вам получить название категории. Это работает для меня
public function getTree($node, $depth = null, $currentLevel = 0)
{
/** @var \Magento\Catalog\Api\Data\CategoryTreeInterface[] $children */
// $children = $this->getChildren($node, $depth, $currentLevel);
// /** @var \Magento\Catalog\Api\Data\CategoryTreeInterface $tree */
// $tree = $this->treeFactory->create();
// $tree->setId($node->getId())
// ->setParentId($node->getParentId())
// ->setName($node->getName())
// ->setPosition($node->getPosition())
// ->setLevel($node->getLevel())
// ->setIsActive($node->getIsActive())
// ->setProductCount($node->getProductCount())
// ->setChildrenData($children);
// return $tree;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$categoryFactory = $objectManager->get('\Magento\Catalog\Model\CategoryFactory');
$categoryId = $node->getId();
$nodeS = $categoryFactory->create()->load($categoryId);
/** @var \Magento\Catalog\Api\Data\CategoryTreeInterface[] $children */
$children = $this->getChildren($node, $depth, $currentLevel);
/** @var \Magento\Catalog\Api\Data\CategoryTreeInterface $tree */
$tree = $this->treeFactory->create();
$tree->setId($nodeS->getId())
->setParentId($nodeS->getParentId())
->setName($nodeS->getName())
->setPosition($nodeS->getPosition())
->setLevel($nodeS->getLevel())
->setIsActive($nodeS->getIsActive())
->setProductCount($nodeS->getProductCount())
->setChildrenData($children);
return $tree;
}
Для версии Magento 2.3.3 в ответе не указано имя.
{
"id": 1,
"parent_id": 0,
"name": null,
"is_active": null,
"position": 0,
"level": 0,
"product_count": null,
"children_data": [
{
"id": 2,
"parent_id": 1,
"name": null,
"is_active": null,
"position": 1,
"level": 1,
"product_count": null,
"children_data": []
}
]
}
Еще один способ получить высшие категории - это
/rest/default/V1/categories?rootCategoryId=2&depth=1
Вы можете добавить глубину в соответствии с вашими требованиями.