Magento 2 RC – Ungültiger Blocktyp
-
13-12-2019 - |
Frage
Ich habe eine Erweiterung für Magento auf Magento 2 1.0.0 Beta erstellt.Jetzt versuche ich, diese Erweiterung für Magento 2 RC zum Laufen zu bringen, aber ich komme damit nicht klar.Was ich habe, ist eine sehr einfache Erweiterung, die einen Block erstellt, in dem ich alle meine Kategorien in der Seitenleiste anzeigen kann (unabhängig davon, welche Kategorie ich gerade ansehe).Die Erweiterung funktionierte in der Betaversion von Magento 1.0.0 einwandfrei, gibt jetzt aber diesen Fehler aus:Ungültiger Blocktyp:\SL\Sidebar\Block\Sidebar.Die Erweiterung ist korrekt installiert.Das ist der Code meines Blocks:
namespace SL\Sidebar\Block;
use Magento\Framework\View\Element\Template;
class Sidebar extends Template {
/**
* @var \Magento\Catalog\Helper\Category
*/
protected $_categoryHelper;
/**
* @var \Magento\Framework\Registry
*/
protected $_coreRegistry;
/**
* @var \Magento\Catalog\Model\Indexer\Category\Flat\State
*/
protected $categoryFlatConfig;
/**
* @param Template\Context $context
* @param \Magento\Catalog\Helper\Category $categoryHelper
* @param \Magento\Framework\Registry $registry
* @param \Magento\Catalog\Model\Indexer\Category\Flat\State $categoryFlatState
*/
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Catalog\Helper\Category $categoryHelper,
\Magento\Framework\Registry $registry,
\Magento\Catalog\Model\Indexer\Category\Flat\State $categoryFlatState,
$data = []
) {
$this->_categoryHelper = $categoryHelper;
$this->_coreRegistry = $registry;
$this->categoryFlatConfig = $categoryFlatState;
parent::__construct($context, $data);
}
/**
* Get all categories
*
* @return array|\Magento\Catalog\Model\Resource\Category\Collection|\Magento\Framework\Data\Tree\Node\Collection
*/
public function getCategories()
{
return $this->_categoryHelper->getStoreCategories();
}
}
Dann lade ich in meinem Theme den Block so:
<block class="SL\Sidebar\Block\Sidebar" name="category-sidebar" template="Magento_Theme::html/sidebar.phtml" />
Registrierung.php:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'SL_Sidebar',
__DIR__
);
Die Erweiterung funktionierte perfekt in der Betaversion von Magento 1.0.0.Kennt hier jemand das Problem?
Lösung
Ich hatte das gleiche Problem mit meinem Setup.
Bei der Installation von Magento 2 mit dem Composer-Installationsprogramm konnte der Autoloader die Klasse nicht finden.
Um dieses Problem zu lösen, müssen Sie die folgende Zeile hinzufügen psr-4
Abschnitt Ihrer Root-Composer.json-Datei.
"SL\\": "app/code/SL/"
Dann renne composer install
und die Klasse wird gefunden