3

次のような __toString() メソッドを持つ Address エンティティがあります。

public function __toString() {
    $result = $this->getStreet();

    if ($this->getStreet2())
        $result .= '\n' . $this->getStreet2();

    $result .= '\n' . $this->getZipCode().' '.$this->getCity();
    return $result;
}

私のテンプレートでは、エンティティにTwig nl2br フィルターを適用します。

{{ user.address|nl2br }}   

しかし、私はまだエスケープされた \n を取得します:

1107 West Adams Boulevard\n90007 ロサンゼルス、カリフォルニア州

エンティティの代わりにこの文字列を使用してみました:

{{ "1107 West Adams Boulevard\n90007 Los Angeles, CA"|nl2br }}   

そして、期待される結果が得られます:

1107 ウェスト アダムズ ブルバード

90007 カリフォルニア州ロサンゼルス

私も試しました

{{ user.address|raw|nl2br }} 

これは安全ではありませんが、それでも機能しません... Twig 1.8.0 と 1.9.0 で試しました。

何か案が ?

4

1 に答える 1

12

代わりに:

$result .= '\n' . $this->getZipCode().' '.$this->getCity();

これを試して:

$result .= "\n" . $this->getZipCode()." ".$this->getCity();

PHP は、二重引用符で囲まれた文字列内のエスケープ文字を解釈します。

この PHP マニュアル ページが役立つ場合があります。

于 2012-07-21T17:14:38.450 に答える