2017-04-13 10 views
1

두 개의 매개 변수 titlesubtitle이있는 간단한보기 도우미 "머리글"이 있습니다. 내 도우미는 두 문자열을 변환하기 위해 AbstractTranslatorHelper를 확장합니다.ZF3 - AbstractTranslatorHelper 및 sprintf

이제 주어진 문자열에 일부 변수를 설정해야하는 경우가 있습니다. 일반적으로 나는 sprintf($this->translate('My string with the variable %s', 'test')으로 이것을 할 것입니다. 그러나 문자열과 변수를 내 도우미에서 어떻게 설정하여 번역을 처리 할 수 ​​있습니까? 아니면 설정하기 전에 번역해야합니까? 순간

$this->header(sprintf($this->translate('title with variable %s'), 'test'), 'subtitle') 
+0

의견을 보내시겠습니까? – Hooli

+0

정말 유감이지만, 길을 가다가 대답 할 수 없었습니다. 당신의 솔루션은 잘 작동합니다! –

+0

아무 문제 없어요. 나는 그것이 당신을 위해 효과가있어 기쁘다. – Hooli

답변

0

는이

$this->header('title with variable %s', 'subtitle')->setTitleVariables([$variables])->setSubtitleVariables([$subVars]); 

을 할 수있는 ... 나는 그런 식으로 할,하지만 난 그것을 정말 좋아하지 않는 경우이 작업을 수행하려면 기본 코드 입니다 :이 코드

class HeaderHelper extends AbstractTranslatorHelper 
{ 
    public function __invoke($title, $subtitle) 
    { 
     $this->title = $title; 
     $this->subtitle = $subtitle; 

     return $this; 
    } 

    public function setTitleVariables(array $variables) 
    { 
     $this->title = $this->translate(vsprintf($this->title, $variables)); 
     return $this; 
    } 

    public function setSubtitleVariables(array $variables) 
    { 
     $this->subtitle = $this->translate(vsprintf($this->subtitle, $variables)); 
     return $this; 
    } 
} 

중 하나 setTitleVariables 또는를 호출하여 setSubtitleVariables 당신은 변수를 전달할 수 있습니다 그 두 문자열의 경우

그런 다음 채워진 도우미에게 이러한 문자열을 렌더링하는 방법을 선택하십시오.

그러나 나는 당신에게이 방법을 제안한다

:

물론
public function render() 
    { 
     return "<h1>" . $this->title . "</h1>" . "<h3>" . $this->subtitle . "</h3>"; 
    } 

당신은 당신이 아니라 당신이 문자열 다음 아래 코드를 렌더링으로 원하는 .phtml 파일 또는 아무것도를 사용하여이를 디자인 할 수 있습니다

$this->header('title with variable %s', 'subtitle')->setTitleVariables([$variables])->render(); 

모든 일을 다 할 것입니다!