3

我有一个带有 __toString() 方法的地址实体,如下所示:

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 西亚当斯大道\n90007 洛杉矶, CA

我尝试使用此字符串而不是实体:

{{ "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 回答