문제

다만 생각할 때 나는 내가 이해하 젠토 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top