Tôi đang sử dụng Magento 2.2 trong chế độ phát triển.
Tôi có một lớp điều khiển
class MyController
{
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\Message\ManagerInterface $messageManager)
{
// stuff
}
}
Điều đó hoạt động chính xác. Tuy nhiên, nếu tôi thêm một tham số hàm tạo bổ sung như thế này:
class MyController
{
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $resultPageFactory,
\Magento\Framework\Message\ManagerInterface $messageManager)
{
// stuff
}
}
Tôi nhận được lỗi
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
...
Nếu tôi xóa /generated
thư mục và làm mới trang, nó sẽ hoạt động.
Câu hỏi của tôi là về cách Magento xử lý bộ đệm và mã được tạo. Tôi có thể thêm mã bổ sung cho các hàm không xây dựng mà không cần phải xóa /generated
, và nó hoạt động. Tại sao nó hoạt động, nhưng việc thêm các tham số hàm tạo bổ sung yêu cầu tôi xóa /generated
thư mục?