Ich verwende Magento 2.2 im Entwicklungsmodus.
Ich habe eine Controller-Klasse
class MyController
{
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\Message\ManagerInterface $messageManager)
{
// stuff
}
}
Das funktioniert richtig. Wenn ich jedoch einen zusätzlichen Konstruktorparameter wie diesen hinzufüge:
class MyController
{
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $resultPageFactory,
\Magento\Framework\Message\ManagerInterface $messageManager)
{
// stuff
}
}
Ich bekomme den Fehler
PHP Fatal error: Uncaught TypeError: Argument 2 passed to
Ben\Testing\Controller\Test::__construct() must be an instance of
Magento\Framework\View\Result\PageFactory, instance of
Magento\Framework\Message\ManagerInterface given, called in
/magento-dev/magento2/generated/code/Ben/Testing/Controller/Test/Interceptor.php
on line 7 and defined in /magento-dev/magento2/app/code/Ben/Testing/Controller/Test.php:7
...
Wenn ich den /generated
Ordner lösche und die Seite aktualisiere, funktioniert es.
Meine Frage ist, wie Magento mit Caching und generiertem Code umgeht. Ich kann Nicht-Konstruktor-Funktionen zusätzlichen Code hinzufügen, ohne sie löschen zu müssen /generated
, und es funktioniert. Warum funktioniert das, aber wenn ich zusätzliche Konstruktorparameter hinzufüge, muss ich den /generated
Ordner löschen ?