2012-11-01 13 views
5

Ist es möglich, einen einfachen HTML-Link in der Beschriftung/Titel eines Kontrollkästchens hinzuzufügen? Ich habe versucht, den folgenden Code:Drupal 7: Checkbox-Label mit Links

<?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') 
) 
); 
?> 

Aber das erzeugt das follwing Etikett (der HTML-Markup nicht "übersetzt" wird):

"Sie müssen unsere < a href accept ="/node/6" > Nutzungsbedingungen </a> und < a href = "/ node/7"> legals </a> *“

(ich habe nach den ersten Klammern hinzugefügt Räume, so dass es nicht in die konvertiert werden Link ich möchte haben)

Ist es nicht po Kann man solche Dinge tun? Ich bin neu in Drupal. Vielleicht kann mir jemand helfen ... Danke!

Antwort

6

Dies geschieht, bevor Sie erzwingen, dass der Text als Nur-Text gedruckt wird.

<?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') 
) 
); 
?> 

Beachten Sie, dass t()-Funktion verwenden, die anders ist Präfix auf Ersatz fungiert. Wenn Sie @tos eingeben, wird es durch check_plain() ausgeführt, so dass HTML nie vom Browser verarbeitet wird, da es HTML-Entitäten codiert.

!tos ermöglicht HTML-Markup, wie es nicht sein wird check_plain() 'd.

+0

Vielen Dank für diese hilfreiche Antwort! Ich habe die ganze Zeit nach so etwas gesucht, aber ich hatte kein Glück. Ich hätte die Dokumentation über die Funktion t() sorgfältiger lesen sollen. – mAtZ

1

Stattdessen können Sie versuchen, #prefix zu verwenden.

$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') 
) 
); 

Ich hoffe, das funktioniert ... Muhammad.

+0

Das hilft nicht. Aber ich bin verwirrt, dass dies immer noch nicht HTML drucken, obwohl die Form-API-Referenz besagt, dass ... – mAtZ

+1

-1. Das ist völlig falsch. FAPI erlaubt HTML-Markup, aber @tos zwingt Text, check_plain() zu sein. –

+0

Big Thx Ayesh. Das hat mir geholfen! Ohne die Platzhalter funktioniert alles gut. – mAtZ