Cześć, już wywołałem metodę konstruowania w moim pliku klasy bloków, proszę sprawdzić poniższy link, aby uzyskać więcej szczegółów codebeautify.org/alleditor/0b796a I dzięki za pomoc.
Pratik
To nie powinna być zaakceptowana odpowiedź. Nie należy używać Objectmanagera w opisany sposób.
seanbreeden
22
Jeśli potrzebujesz identyfikatora kategorii w Magento2, możesz uzyskać wartości, wykonując następujące kroki
1. Uwzględnij użycie Magento\Framework\Registryw swoim pliku klasy.
<?php
/**
* class file
*/namespaceVendor\Module\Model;useMagento\Framework\Registry;...
2. Stwórz obiekt dla tego za pomocą Object Managera lub jeśli używasz go w kontrolerze, przypisz w swojej __construct()funkcji jako \Magento\Framework\Registry $registry:
Dalsze informacje na temat implementacji tej koncepcji w Magento2 znajdują się w pliku klasy i funkcji o nazwie funkcja publiczna _initCategory(). W tej metodzie rejestrują bieżącą kategorię.
jak uzyskać nazwę kategorii na stronie listy? bez użycia menedżera obiektów?
jafar pinjar
3
Powyższe wydaje się poprawne, ale myślę, że przejście do rejestru nie jest najlepszym podejściem. Magento zapewnia Layer Resolver, który już zawiera tę funkcjonalność. (Zobacz blok TopMenu we wtyczkach katalogu)
Sugeruję wstrzyknięcie klasy \ Magento \ Catalog \ Model \ Layer \ Resolver i użycie jej do uzyskania bieżącej kategorii. Oto kod:
Odpowiedzi:
Myślę, że zrobiłeś w swoim kontrolerze być może powinieneś zainicjować menedżera obiektów za pomocą klasy kontekstu w metodzie __construct.
źródło
Jeśli potrzebujesz identyfikatora kategorii w Magento2, możesz uzyskać wartości, wykonując następujące kroki
1. Uwzględnij użycie
Magento\Framework\Registry
w swoim pliku klasy.2. Stwórz obiekt dla tego za pomocą Object Managera lub jeśli używasz go w kontrolerze, przypisz w swojej
__construct()
funkcji jako\Magento\Framework\Registry $registry
:3. Następnie możesz po prostu użyć go z klasą jako:
Dalsze informacje na temat implementacji tej koncepcji w Magento2 znajdują się w pliku klasy i funkcji o nazwie funkcja publiczna
_initCategory()
. W tej metodzie rejestrują bieżącą kategorię.źródło
Wypróbuj ten kod. to na pewno ci pomoże.
źródło
Powyższe wydaje się poprawne, ale myślę, że przejście do rejestru nie jest najlepszym podejściem. Magento zapewnia Layer Resolver, który już zawiera tę funkcjonalność. (Zobacz blok TopMenu we wtyczkach katalogu)
Sugeruję wstrzyknięcie klasy \ Magento \ Catalog \ Model \ Layer \ Resolver i użycie jej do uzyskania bieżącej kategorii. Oto kod:
Oto, co robi rzeczywista metoda getCurrentCategory () w klasie Resolver.
Jak widać, nadal korzysta z rejestru, ale zapewnia awarię w przypadku niepowodzenia.
źródło