2017-04-13 12 views
1

私は、2つのパラメータtitlesubtitleを持つ単純なビューヘルパー "ヘッダー"を持っています。私のヘルパーは、2つの文字列を翻訳するために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; 
    } 
} 

setTitleVariablessetSubtitleVariablesのいずれかを呼び出すことによって、あなたは、変数を渡すことができますそれらの2つの文字列の場合

次に、入力したヘルパーでこれらの文字列のレンダリング方法を選択します。

しかし、私はあなたにこの方法をお勧め:

:あなたは限り、あなたは文字列 して、以下のコードをレンダリングするようしたい .phtmlファイルか何かを使用してこれを設計することができます。もちろん、

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

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

完全なことを行います!