2012-11-01 5 views
5

è possibile aggiungere un semplice collegamento html nell'etichetta/titolo di una casella di controllo? Ho provato il seguente codice:Drupal 7: etichetta Checkbox con collegamenti in esso

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

Ma che produce l'etichetta follwing (il markup HTML non è "tradotto"):

"È necessario accettare la nostra < a href ="/node/6" > termini di servizio </a> e < a href = "/ node/7"> Note legali </a> *"

spazi

(ho aggiunto dopo la parentesi di apertura in modo che non verrà convertito al collegamento che voglio avere)

Non è po è possibile fare queste cose? Sono nuovo di Drupal. Forse qualcuno può aiutarmi ... Grazie!

risposta

6

Ciò accade prima di forzare il testo da stampare come testo normale.

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

nota che si sta utilizzando t() funzione, che agisce in modo diverso sul prefisso di sostituzione. Se inserisci @tos, verrà eseguito attraverso check_plain() in modo che HTML non venga mai elaborato dal browser in quanto codifica le entità HTML.

!tos consente il markup HTML poiché non sarà check_plain() 'd.

+0

Grazie per questa risposta utile! Ho cercato qualcosa di simile tutto il tempo, ma non ero fortunato. Avrei dovuto leggere più attentamente la documentazione sulla funzione t(). – mAtZ

1

Invece si può provare a utilizzare #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') 
) 
); 

Spero che funzioni ... Muhammad.

+0

Questo non aiuta. Ma sono confuso dal fatto che questo non stampi ancora HTML sebbene il riferimento all'API di Form indichi che ... – mAtZ

+1

-1. Questo è completamente sbagliato. FAPI consente il markup HTML ma @tos forza il testo a check_plain(). –

+0

Big thx Ayesh. Questo mi ha aiutato! Senza i segnaposto, tutto funziona perfettamente. – mAtZ