【发布时间】:2018-07-26 09:03:15
【问题描述】:
我正在创建 api 以获取 magento 2 中特定类别的可过滤属性。
我们在分类页面中看到了分层导航。我想在 api 中获得完全相同的数据。
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$filterableAttributes = $objectManager->get(\Magento\Catalog\Model\Layer\Category\FilterableAttributeList::class);
$appState = $objectManager->get(\Magento\Framework\App\State::class);
$layerResolver = $objectManager->get(\Magento\Catalog\Model\Layer\Resolver::class);
$filterList = $objectManager->create(
\Magento\Catalog\Model\Layer\FilterList::class,
[
'filterableAttributes' => $filterableAttributes
]
);
$category_id = 41;
// $appState->setAreaCode('frontend');
$layer = $layerResolver->get();
$layer->setCurrentCategory($category_id);
$filters = $filterList->getFilters($layer);
$finalFilters = [];
$data = array();
$i = 0;
foreach ($filters as $filter) {
if ($filter->getItemsCount()) {
$name = $filter->getName();
foreach ($filter->getItems() as $item) {
if($item->getFilter()->getAttributeModel()->getAttributeCode() == 'price'){
$finalFilters[$name][$i]['name'] = $this->Helper->removeHTML($item->getLabel()->getArguments());
$finalFilters[$name][$i]['value'] = $item->getValue();
$finalFilters[$name][$i]['code'] = $item->getFilter()->getAttributeModel()->getAttributeCode();
}
else{
$finalFilters[$name][$i]['name'] = $item->getLabel();
$finalFilters[$name][$i]['value'] = $item->getValue();
$finalFilters[$name][$i]['code'] = $item->getFilter()->getAttributeModel()->getAttributeCode();
}
$i++;
}
}
}
但出现以下错误。
Exception #0 (Magento\Framework\Exception\LocalizedException):属性模型未定义。
【问题讨论】:
-
你是如何定义你的api的?谁在抛出错误?目前还不清楚问题是什么。
-
我在 magento 2 中创建 api。Magento 抛出错误。
-
我有同样的问题,你找到解决办法了吗?
标签: php api magento magento2 layered-navigation