2016-01-28 2 views
1

Я пытаюсь получить категорию в Magento 2.0 этим url_key.Magento 2 Как получить категорию по url_key

Теперь у меня есть:

 $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
     $categoryFactory = $objectManager->create('Magento\Catalog\Model\CategoryFactory'); 
     $category = $categoryFactory->create() 
      ->addAttributeToFilter('url_key','my_category_url_key'); 

возвращает мне эту ошибку:

Ошибка шаблона фильтрации: Недопустимый метод Magento \ Каталог \ Model \ Категория \ перехватчик :: addAttributeToFilter (Array ([0] => url_key [1] => my_category_url_key))

Благодаря.

ответ

0

addAttributeToFilter - это метод коллекций.
Вы должны выполнить в коллекции категорий, а не в экземпляре категории.

+0

Да я вижу, что. Теперь, как я могу фильтровать url_key? – ViSuaL

-2

Попробуйте этот код ниже, я надеюсь, что вы получите свой результат.

<?php 
$objectManagerr = \Magento\Framework\App\ObjectManager::getInstance(); 
$categoryFactory = $objectManagerr->create('Magento\Catalog\Model\ResourceModel\Category\CollectionFactory'); 
$categoryy = $categoryFactory->create() 
      ->addAttributeToFilter('url_key','your_category_url_key') 
      ->addAttributeToSelect('*'); 

foreach ($categoryy as $productt){ 

    echo $productt->getName().'<br>'; 
    echo $productt->getId(); 
} 
?> 
+0

хотя код багги, но идея в правильном направлении. –

2
/** 
* @var \Magento\Catalog\Model\CategoryFactory 
****** inject in constructor ****** 
*/ 
protected $categoryFactory; 

--------- 
--------- 
--------- 
$categorys = $this->categoryFactory->create() 
      ->getCollection() 
      ->addAttributeToFilter('url_key','devops') 
      ->addAttributeToSelect(['entity_id']); 
echo "<pre>"; 
print_r($categorys->getFirstItem()->getEntityId());