2017-08-23 16 views
2

我試圖將我的模板從普通的PHP轉換爲Twig代碼,我不知道從代碼中查看如何在Twig代碼中編寫以下示例。任何人都可以將我指向正確的方向嗎?轉換從PHP的樹枝中的代碼

我的下列PHP代碼。

<?php } if ($body_font != '') { 
$fontpre = $body_font; 
$font = str_replace("+", " ", $fontpre); ?> 
body {font-family:<?php echo $font ?>;} 
<?php } ?> 

我已經嘗試了以下在樹枝。

{% if body_font != '' %} 
{% set fontpre = 'body_font' %} 
{% set font = fontpre|replace("+", " ") %} 
body {font-family:{{ font }}; } 
{% endif %} 

但是,這是行不通的。你能幫忙嗎?我在這裏做錯了什麼?

回答

2

replace過濾器與PHP函數str_replace不同。它接受映射,其中鍵是應該被值替換的字符串:

{% set font = fontpre|replace({"+": " "}) %} 
+0

你是對的,另一個問題是。 '$ body_font'變量值沒有得到。如何以適當的方式編寫'$ fontpre = $ body_font;'這個代碼。 – user8302249

+0

我試過這個'{%set font = body_font | replace(「+」,「」)%}',現在工作正常。謝謝。 – user8302249

+0

我很樂意提供幫助。 – Timurib

0

問題是,在您的樹枝代碼中,您已使用字符串文字body_font初始化變量fontpre。在你的php代碼中,$body_font也是一個變量。

這實際上是無用的再次設置它,你可以直接在你的php代碼中使用該變量(例如,$font = str_replace("+", " ", $body_font); ?>),但除此之外;確保這個特定的變量也可以在你的樹枝代碼中使用,或者使用引用正確字體名稱的字符串字面值。雖然在這種情況下,您可以完全跳過replace函數(因爲您可以直接將其設置爲正確)。