2014-12-05 85 views
2

我使用的顯示樹枝頁面內豐富的文本塊長度:如何顯示在樹枝HTML,同時仍微調所顯示

{{ log.entry | raw }} 

這顯示在富文本格式,但是我以前只使用

{{ log.entry[:50] ~ '...'}} 

顯示的這個前50個字符當我在任一以下格式二者結合起來:

{{ log.entry[:50] ~ '...' | raw }} 


{{ log.entry | raw [:50] ~ '...'}} 

它以非html格式的方式顯示它。有關如何使用樹枝以其豐富文本格式顯示約50個字符的文本的想法?

+0

什麼是*富文本*?它是與HTML標籤的文本?如果第50個字符位於HTML標籤的中間並且將其切斷,該怎麼辦?這不是一個簡單的問題。 – 2014-12-05 23:02:40

+0

是在這種情況下富文本包含HTML標記,是的,我意識到我面臨停止在標籤中間的問題,但這就是爲什麼我試圖接觸到更有經驗的樹枝或PHP用戶:) – Jacob 2014-12-06 08:48:05

回答

1

樹枝只是一個模板引擎,它不會做你想要的。你需要做的是改變你餵養它的數據。

假設Log.entry是一種返回整個日誌字符串的方法,您可以創建一個類似的方法,比如說Log.entry_50返回50個字符,直到遇到第一個結束標記。 (假設您希望能夠顯示整個字符串,而不僅僅是前50個字符)

方便的假設:所有結束標記都是相同的,比如說</X>。在你的方法entry_50,從entry採取串並執行以下操作:

// assuming $entry holds the entire string 
$closing_tag = '</X>'; 
$end = strpos($entry, $closing_tag, 49) + 4; //add 4 because you want to include te entire closing tag 
return substr($entry,0,$end); 

現在做{{Log.entry_50 |原始}}在你的樹枝模板。

有點不方便的假設:

在這裏,我將承擔所有未關閉標籤相同,但都具有</*>形式。

// assuming $entry holds the entire string 
$closing_tag_beginning = '</'; 
$closing_tag_end = '>'; 
$end_start = strpos($entry, $closing_tag_beginning, 49); 
$end_end = strpos($entry, $closing_tag_end, $end_start); 
return substr($entry,0,$end_end); 

Ofcourse這將是一個稍微不同的解決方案,如果Log.entry是可變的,但在這種情況下,只添加了結合上述溶液中的方法。

+0

謝謝,經過探索後,我得出結論,PHP將不得不被使用。很多腿傷心地工作,但仍然是一個解決方案。 – Jacob 2014-12-15 14:15:28