2012-10-01 69 views
0

我爲我的數據模型之一(「成就」)配置Symfony 1.4的管理生成器。 「成就」數據模型有一個字段(「url」),用於存儲指向外部資源的URL,並且我希望此URL在管理生成器列表操作中呈現爲鏈接。默認情況下,管理生成器將鏈接顯示爲純文本。我試着編寫一個函數來用HTML裝飾URL,如果字符串太長(添加到「lib/model/doctrine/Achievement.class.php」),則修剪該字符串。爲管理生成器列表操作禁用轉義?

function getLink() 
{ 
    $text = $this->getUrl(); 
    if(strlen($text) > 40) 
    { 
    $text = sprintf("%s...%s", substr($text, 0, 20), substr($text, -20, 20)); 
    } 

    return sprintf('<a href="%s">%s</a>', $this->getUrl(), $text); 
} 

不幸的是,在管理生成器列表視圖中,HTML被轉義,留下一個長長的醜陋字符串。我無法弄清楚如何禁用此字段的轉義。

如果我在「apps/backend/config/settings.yml」中將「ESC_SPECIALCHARS」更改爲「ESC_RAW」,則鏈接正確呈現。 Symfony 1.4沒有更好的控制轉義嗎?

回答

4

您不應在模型中生成HTML。相反,爲此創建一個helper函數,並將字段渲染爲partial並在其中使用助手。

1

您可以在您的控制器(actions.class.php)中使用sfConfig::set('sf_escaping_strategy', false)執行list操作。請參閱我對this問題的回答。

但是,就像1ed所說的,你最好爲此做一個幫手,而不是在你的控制器中寫html代碼。

相關問題