1

Facebook이라는 module을 사용하고 있습니다.보기 도우미는 shareUrl입니다. 이보기 도우미는 모든 URL의 Facebook 공유 URL을 가져옵니다.php - Zend Framework의보기 도우미 이름이 충돌합니다.

그러나 최근에 Twitter이라는 또 다른 module을 추가했으며 여기에는 shareUrl이라는보기 도우미가 있습니다.

Zend Framework 버전 2 또는 3에서보기 내에서 shareUrl 뷰 헬퍼를 다른 뷰 헬퍼와 비교하려면 어떻게해야합니까?

그냥 명확히하기 위해, 내보기에있는 코드는 다음과 같습니다 : 나는 $facebookShareUrl$twitterShareUrl 두 개의 서로 다른 뷰 헬퍼의 반환 값을 저장하고 싶은

$facebookShareUrl = $this->shareUrl('https://www.example.com/'); 
$twitterShareUrl = $this->shareUrl('https://www.example.com/'); 

.

+0

(모듈 구성 파일에서)이 헬퍼를 어떻게 등록 했습니까? – gsc

답변

6

동일한 이름을 가진 두 명의 도우미가있는 경우 servicemanager (viewhelpermanager) 내의 지정된 이름으로 등록되어 있으므로 하나만 사용할 수 있습니다. application.config.php에있는 모듈을로드하면서 스위치를 돌리면 기본값을 변경할 수 있습니다. 그러나 그것은 당신의 문제에 대한 진정한 해결책은 아닙니다.

그래서 필요한 뷰 헬퍼를 여러 가지 방법으로 얻을 수 있습니다.

1) FQCN을 사용하여 등록 된 뷰 헬퍼에 대한 별칭을 설정하는 것이 가장 좋습니다. 우리가) $this->facebookShareUrl('exmaple.com')

return [ 
    'view_helpers' => [ 
     'aliases' => [ 
      'facebookShareUrl' => FacebookModule\Helper\ShareUrlHelper::class, 
      'twitterShareUrl' => TwitterModule\Helper\ShareUrlHelper::class, 
     ], 
    ] 
] 

이 같은 viewherlpers에 사용되는 PhpRenderer 인스턴스를 사용하여 뷰 자체에 viewhelpermanager를 사용하여 FQCN하여 도우미를 취득 할 수 별칭을 만들 경우 몇 가지 예제 코드를 참조하십시오. 파일 내 view.phtml

$viewHelperManager = $this->getHelperPluginManager(); 
$facebookShareUrlHelper = $viewHelperManager->get(FacebookModule\Helper\ShareUrl::class); 
$twitterShareUrlHelper = $viewHelperManager->get(TwitterModule\Helper\ShareUrl::class); 
+0

방법 1을 시도했지만 'facebookShareUrl "이라는 이름의 플러그인이 플러그인 관리자 Zend \ View \ HelperPluginManager'에 없습니다.라는 오류 메시지가 나타납니다. 이 방법을 사용하기 위해 취해야 할 추가 단계가 있습니까? –

+1

모듈에서 뷰 헬퍼를 어떻게 등록했는지 알아야합니다. 어떤 패키지/라이브러리를 사용하고 있었는지에 대한 단서가 없었으므로 일반 솔루션을 제공하려 했으므로 상황에 맞게 조정해야했습니다. repo를 github/packagist에있는 패키지에 연결할 수 있다면 나는 당신을 위해 예제를 조정할 수있을 것이다. – Kwido

+1

고마워요! 귀하의 회신에 따라 모듈을 업데이트 할 수있었습니다. 나를위한 해결책은 호출되는 모듈에서 'view_helpers'아래에 '별칭'과 '공장'섹션을 모두 추가하는 것이 었습니다. 모듈에 'factory'섹션 만 포함되어 있다면 제대로 작동하는지 모르겠지만 다행스럽게도이 모듈을 소유하고 있기 때문에 업데이트 할 수있었습니다. –

관련 문제