2012-11-01 43 views
5

是否可以在複選框的標籤/標題中添加一個簡單的html鏈接?我嘗試下面的代碼:Drupal 7:帶有鏈接的複選框標籤

<?php 
$form['legal']['#type'] = 'checkbox'; 
$form['legal']['#required'] = TRUE; 
$form['legal']['#title'] = t(
    'You must accept our @tos and @legals', 
    array(
    '@tos' => l(t('terms of service'), 'node/6'), 
    '@legals' => l(t('legals'), 'node/7') 
) 
); 
?> 

但產生的follwing標籤(HTML標記不是 「翻譯」):

「你必須接受我們的< A HREF =」/節點/ 6" >服務條款</a>和< a href =「/ node/7」> legals </a> *「

(我在開頭的括號後面加了空格,以便它不會被轉換爲我想要的鏈接)

難道不是po是否可以做這樣的事情?我對drupal很陌生。也許有人可以幫助我......謝謝!

回答

6

在強制將文本打印爲純文本之前,會出現這種情況。

<?php 
$form['legal']['#type'] = 'checkbox'; 
$form['legal']['#required'] = TRUE; 
$form['legal']['#title'] = t(
    'You must accept our !tos and !legals', 
    array(
    '!tos' => l(t('terms of service'), 'node/6'), 
    '!legals' => l(t('legals'), 'node/7') 
) 
); 
?> 

請注意,您使用的t()功能,作用不同的更換的前綴。 如果你放入@tos,它將通過check_plain()運行,因此HTML永遠不會被瀏覽器處理,因爲它會對HTML實體進行編碼。

!tos允許使用HTML標記,因爲它不會是check_plain()'d。

+0

謝謝你這個有用的答案!我一直在尋找這樣的東西,但並不幸運。我應該更仔細地閱讀關於t()函數的文檔。 – mAtZ

1

相反,您可以嘗試使用#prefix

$form['legal']['#prefix'] = t(
    'You must accept our @tos and @legals', 
    array(
    '@tos' => l(t('terms of service'), 'node/6'), 
    '@legals' => l(t('legals'), 'node/7') 
) 
); 

希望這項工程...穆罕默德。

+0

這沒有幫助。但我很困惑,這仍然不打印HTML,雖然窗體API參考說... – mAtZ

+1

-1。這完全是錯誤的。 FAPI允許使用HTML標記,但@tos強制文本爲check_plain()。 –

+0

Big thx Ayesh。這幫助我了!沒有佔位符,一切正常。 – mAtZ