2017-03-28 7 views
0

ZF3의보기 도우미에서 사용자 정의 플러그인을 호출 할 수있는 방법이 있습니까?보기 도우미에서 사용자 정의 플러그인 호출

ZF3에 따라, 도우미를위한 공장이 만들어졌습니다.

ZF2에서 이것은 우리가 플러그인을 호출하는 방법입니다.

$ecommercePlugin = $this->getServiceLocator() 
->get('ControllerPluginManager') 
->get('CustomPlugin'); 

serviceLocator가 ZF3에서 제거되었으므로 플러그인 호출 방법은 무엇입니까?

편집 module.config

'view_helpers' => array(
    'invokables' => array(
     'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class 
    ) 
), 

MymethodController\CustomPlugin

class CustomPlugin extends AbstractPlugin 
{ 
    //My methods 
} 
+0

문제를 해결 했습니까? 아니면 여전히 도움이 필요합니까? – SzymonM

+0

@SzymonM 도움이 필요하십니다. 부디. –

+0

오류가 있습니까? '$ this-> customPlugin()'을 할 때 어떤 일이 일어나는가? – SzymonM

답변

0

나는 ViewHelperManager으로 CustomPlugin 등록 추천 할 것입니다. 구성에 대한 정보는 Zend's Manual에서 찾을 수 있습니다. 이것은 당신의 모듈의 module.config.php이 보일 수 있습니다 방법 일반적으로 :

<?php 
    return [ 
     'controller_plugins' => [ 
      'invokables' => [ 
       'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class 
      ], 
     ], 
    ]; 

당신이 추가 할 뷰 헬퍼로 사용하기 위해 등록하려면 :

<?php 
    return [ 
     'controller_plugins' => [ 
      'invokables' => [ 
       'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class 
      ], 
     ], 
     'view_helpers' => [ 
      'invokables' => [ 
       'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class 
      ] 
     ], 
    ]; 

이 새로운 설정하면 두 컨트롤러에서 $this->CustomPlugin()를 호출 할 수 있도록하고 조회수. 이제 플러그인/뷰 도우미에 종속성을 주입해야하는 상황이 발생할 수 있습니다. 이제 플러그인 /보기 도우미를 호출 할 때, 공장을 실행하고 원하는 클래스를 조립합니다

<?php 
    return [ 
     'controller_plugins' => [ 
      'factories' => [ 
       'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class 
      ], 
     ], 
     'view_helpers' => [ 
      'factories' => [ 
       'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class 
      ] 
     ], 
    ]; 

이 경우 당신은 단순히 발견하고 종속성을 주입 처리하고로 설정을 변경하는 팩토리 클래스를 생성 할 수 있습니다. 궁금한 점이 있으면 알려주세요. 구성에 많은 유연성이 있으며 구체적인 요구 사항이나 CustomPlugin 클래스의 예가 있으며 Module.php/module.config.php 구성은 원하는 것을보다 정확하게 제공 할 수 있습니다.

+0

제안 사항으로 플러그인을 구성했습니다. 그러나 나를 위해 일하지 않았다. 오류> 정의되지 않은 메서드 호출 :: CustomPlugin() –

+0

플러그인 클래스 및 구성을 게시 할 수 있습니까? –

+0

내 편집을 참조하십시오. –