我试图通过它url_key在Magento 2.0中获得一个类别。
现在我有了:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$categoryFactory = $objectManager->create('Magento\Catalog\Model\CategoryFactory');
$category = $categoryFactory->create()
->addAttributeToFilter('url_key','my_category_url_key');
它返回给我这个错误:
错误过滤模板:无效的方法 Magento的\目录\型号\目录\拦截:: addAttributeToFilter(阵列 ([0] => url_key [1] => my_category_url_key))
感谢。
答案 0 :(得分:4)
Application.MainPage
答案 1 :(得分:0)
addAttributeToFilter
是一种收藏方法
您应该在类别集合上执行,而不是在类别实例上执行。
答案 2 :(得分:0)
根据您的代码,您错过了正确的方法,以便通过url_key获取类别。 现在我们可以使用方法 loadByAttribute ,所以你的代码应该是这样的:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$categoryFactory = $objectManager->create('Magento\Catalog\Model\CategoryFactory');
$category = $categoryFactory->create()->loadByAttribute('url_key','my_category_url_key');
答案 3 :(得分:0)
我知道这是一个古老的问题,但是如果有人怀疑...
这里的所有答案都使用ObjectManager。那是不好的做法。实现此目的的正确方法如下:
namespace Vendor\Module\Model;
use Magento\Catalog\Model\CategoryFactory;
class MyClass {
private $categoryFactory;
public function __construct(
CategoryFactory $categoryFactory
} {
$this->categoryFactory = $categoryFactory;
}
public function MyFunction() {
$categoryFactory = $this->categoryFactory->create();
$category = $categoryFactory->loadByAttribute('url_key', 'my_category_key');
$categoryId = $category->getId(); // E.g. if you want the ID.
}
这将返回带有URL键“ my_category_key”的类别的对象。
答案 4 :(得分:-1)
请尝试以下代码,希望您能得到结果。
<?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();
}
?>