2016-11-22 15 views
4

私は、このコマンドを実行してコンパイルした後、この問題が発生したMagento 2:Controller :: __ construct()に渡される引数1は、.. .. Action Contextのインスタンスでなければなりません。 .. ObjectManagerのインスタンスが与えられました

Fatal error: Uncaught TypeError: Argument 1 passed to MyModule\Service\Controller\Module\Version::__construct() must be an instance of Magento\Framework\App\Action\Context, instance of Magento\Framework\ObjectManager\ObjectManager given, called in /srv/www/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php on line 93 and defined in /srv/www/app/code/MyModule/Service/Controller/Module/version.php:16

::私は私のMagentoの2モジュールを実行しようと次のエラーが

magento setup:di:compile 

私は一掃することをお勧め記事をたくさん読みました/ var/diと/ var/generationフォルダに格納され、エラーが修正されている間は、開発環境でのみ動作します。運用環境でこれらのフォルダをクリアできないため、他の拡張機能が破損する可能性があります。

これは私のコントローラである:VAR /世代-rf RMを使用して、古い生成されたファイルを削除する

namespace MyModule\Service\Controller\Module; 

class Version extends \MyModule\Service\Controller\Module { 

    protected $resultJsonFactory; 
    protected $objectManager; 
    protected $helper = null; 
    protected $config = null; 

    /** 
    * @param \Magento\Framework\App\Action\Context $context 
    * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory 
    * @param \MyModule\Service\Helper\Data $helper 
    */ 
    public function __construct(
     \Magento\Framework\App\Action\Context $context, 
     \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory, 
     \MyModule\Service\Helper\Data $helper 
    ) { 

     $this->resultJsonFactory = $resultJsonFactory; 
     $this->helper = $helper; 
     $this->objectManager = $context->getObjectManager(); 
     parent::__construct($context); 
     parent::initParams(); 

    } 

    /** 
    * @return \Magento\Framework\Controller\Result\Json 
    */ 
    public function execute() 
    { 
     $result = $this->resultJsonFactory->create(); 
     $data = new \stdClass(); 
     $data->magentoVersion = (string) $this->objectManager->get('\Magento\Framework\App\ProductMetadata')->getVersion(); 
     $data->phpVersion = (string) phpversion(); 
     $data->moduleEnabled = $this->helper->getConfig()['enabled']; 
     $data->apiVersion = "2.0"; 
     return $result->setData($data); 
    } 
} 

そして、これがMyModuleという\サービス\ Controllerの私が持っているものである

namespace MyModule\Service\Controller; 

abstract class Module extends \Magento\Framework\App\Action\Action { 

    protected $pageSize = null; 
    protected $pageNum = 0; 
    protected $startDate = null; 
    protected $endDate = null; 
    protected $sortDir = 'asc'; 
    protected $filterField = 'created_at'; 
    protected $id = null; 
    protected $helper; 

    protected function initParams() { 
     if ((bool) $pageSize = $this->getRequest()->getParam('page_size')) { 
      $this->pageSize = $pageSize; 
     } 
     if ((bool) $pageNum = $this->getRequest()->getParam('page_num')) { 
      $this->pageNum = $pageNum; 
     } 
     if ((bool) $startDate = $this->getRequest()->getParam('start_date')) { 
      $this->startDate = $startDate; 
      if ((bool) $endDate = $this->getRequest()->getParam('end_date')) { 
       $this->endDate = $endDate; 
      } else { 
       $this->endDate = date('Y-m-d'); 
      } 
     } elseif ((bool) $updatedStartDate = $this->getRequest()->getParam('updated_start_date')) { 
      $this->filterField = 'updated_at'; 
      $this->startDate = $updatedStartDate; 
      if ((bool) $updatedEndDate = $this->getRequest()->getParam('updated_end_date')) { 
       $this->endDate = $updatedEndDate; 
      } else { 
       $this->endDate = date('Y-m-d'); 
      } 
     } 
     if ((bool) $sortDir = $this->getRequest()->getParam('sort_dir')) { 
      $this->sortDir = $sortDir; 
     } 
     if ((bool) $id = $this->getRequest()->getParam('id')) { 
      $this->id = $id; 
     } 
    } 

    protected function isEnabled() { 
     return $this->helper->getConfig()['enabled']; 
    } 

    protected function isAuthorized() { 

     $token = $this->helper->getConfig()['security_token']; 
     $authToken = (isset($_SERVER['HTTP_X_TOKEN']) ? $_SERVER['HTTP_X_TOKEN'] : $_SERVER['X_TOKEN']); 

     if (empty($authToken)) { 
      return false; 
     } 

     if (trim($token) != trim($authToken)) { 
      $this->helper->log('feed request with invalid security token'); 
      return false; 
     } 

     return true; 
    } 
} 
+0

http://magento.stackexchange.com/q/144118/24432私はこれまで同様の質問をしてきましたが、これまでのところ解決策はありません。見つけたら、教えてください。 – peedee

答えて

0

のtry/Magentoはすべてのクラスファイルをそのコンストラクタで事前生成するため、* magentoルートディレクトリから*コマンドを実行します。生成されたクラスは元のクラスを拡張し、プラグインを呼び出すためにmagentoによって使用されます。

関連する問題

 関連する問題