Magento2,객체 관리자를 전달하는 또 다른 객체는 다음,예상되는 이유는?
-
28-09-2020 - |
문제
다만 생각할 때 나는 내가 이해하 젠토 2 개체 관리자와 종속성을 주입 뭔가가 일어나는 내가 이해하지 못합니다.나는 생각을 전달 context
en pagefactory
체 젠토하지만 말이 나지 않습니다.두 번째 잘못된 것 같다.
Recoverable Error: Argument 2 passed to Demo\Hello\Controller\Adminhtml\Order\MassPrint::__construct() must be an instance of Magento\Framework\View\Result\PageFactory, instance of Magento\Framework\App\ResourceConnection given, called in
컨트롤러:
<?php
namespace Demo\Hello\Controller\Adminhtml\Order;
use Magento\Backend\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
class MassPrint extends \Magento\Backend\App\Action {
public function __construct(Context $context, PageFactory $pageFactory) {
parent::__construct($context);
}
}
그것은 유형을 이해 암시 같이 내가 원하는:
must be an instance of Magento\Framework\View\Result\PageFactory
하지만 그것은 전달
instance of Magento\Framework\App\ResourceConnection given
왜 그렇습니까?거기에 몇 가지 마 가 젠토는 내가 이해하지 못하는(아직).
해결책
TL;박사
당신이 볼 수 있는 오류 Interceptor.php
인 빈 /var/generation/
기 전에 당신은 모습니다.그것을 많이 저장됩니다.
설명
후에는 어떤 테스트가 기본 원인입니다.을 실행할 때 사용자 정의 컨트롤러한 첫 번째 시간 젠토 자동으로 생성하는 파일이 있습니다.그래서 지금까지 너무 좋아요.내 경우에는 그냥 하나입니다.그것은에 살고있는 var\generation\
전체 경로로 이 예제에서는 것입 var\generation\Demo\Hello\Controller\Adminhtml\Order\MassPrint\Interceptor.php
.
이 클래스를 확장하고 사용자 정의 컨트롤러입니다.그래서 자연스럽게 그것은 부모를 부 constuctor 에서 자신의 constuctor.그래서 변경하는 경우의 컨트롤러를 생성자를 이 파일의 재생성해야 합니다 마하신의 새 코드입니다.지 않는 경우에 그것을 원치 않는 결과를 얻을 것입니다.그래서 반드시 적어도 삭제 요격 클래스는 컨트롤러입니다.쉽게 될 것이 빈 전체적인 감독 그래서 Magento 것입니다 재생에 모든 파일과 일치하는 새 코드입니다.
rm -rf var/generation/*
실제로 magento 은 매우 좋은 증거를 보기 위하여 어디에서의 마지막 부분에 오류 메시지가 표시됩니다.
called in /var/generation/Demo/Hello/Controller/Adminhtml/Order/MassPrint/Interceptor.php on line 15