2016-01-20 4 views

答えて

2

このコードを試してください。これは間違いなくあなたを助けるでしょう。

<?php 
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
    $category = $objectManager->get('Magento\Framework\Registry')->registry('current_category');//get current category 
    echo $category->getId(); 
    echo $category->getName(); 
?> 
+0

ありがとう@Makwana Ketan –

+3

依存性注入の原則を尊重しない –

+1

私のコメントにフラグを付ける理由はありますか? @マクワナ、このような人をいじめるのではなく、あなたの間違いから学び、よい慣行を分かち合うべきでしょう。 –

10

Magentoは、アクセスするカテゴリのレジストリを設定します。だから、currenctカテゴリ、方法下記の使用を得るために:その後、

/** 
* @param \Magento\Framework\Registry $registry 
*/ 

protected $_registry; 

public function __construct(
    \Magento\Framework\Registry $registry 
) { 
    $this->_registry = $registry; 
} 

と使用:

$category = $this->_registry->registry('current_category');//get current category 

を今、あなたは、コレクションにアクセスして、そのような

$ category->のgetName()などの詳細を取得することができます
+3

異なっ上記選びだし1まで、このコードに関しての依存性注入の原則から、私は同意コード – user2270248

+0

内で直接のObjectManagerを使用していない、それはMagentoの2 – cjohansson

1

上記は正しいように見えますが、私はレジストリにまっすぐジャンプするのが最良のアプローチではないと思います。 Magentoは、すでにその機能をカプセル化しているレイヤーリゾルバを提供しています。 (カタログプラグインのTopMenuブロックを参照してください)

\ Magento \ Catalog \ Model \ Layer \ Resolverクラスを注入し、それを使って現在のカテゴリを取得することをお勧めします。ここでは、コードは次のようになります。

ここ
<?php 

namespace FooBar\Demo\Block; 

class Demo extends \Magento\Framework\View\Element\Template 
{ 
    private $layerResolver; 

    public function __construct(
     \Magento\Framework\View\Element\Template\Context $context, 
     \Magento\Catalog\Model\Layer\Resolver $layerResolver, 
     array $data = [] 
    ) { 
     parent::__construct($context, $data); 

     $this->layerResolver = $layerResolver; 
    } 

    public function getCurrentCategory() 
    { 
     return $this->layerResolver->get()->getCurrentCategory(); 
    } 
} 

は、実際のgetCurrentCategory()メソッドはリゾルバクラスで何をするかです。

ご覧のとおり、レジストリは引き続き使用されますが、失敗した場合のフォールバックを提供します。

+0

で 'ObjectManager'を使用するように悪い習慣だ、これは正しい応答であります+1はホイールを再発明しないためです! OPが求めているのはまさに*正確なものではありませんが、フォールバックの仕組みのためにおそらく他の答えより良い解決策です。私はそれが私のためだと分かっています。 – Eric

関連する問題