2012-11-01 10 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マークアップは、 "翻訳" されていません)生産:/ノード/ 6" "あなたは私たちを<のhref =受け入れなければならない"

を>サービス</A>と<の用語のhref =「/ノード/ 7」>リーガル</A>それはに変換されないように*」

(私が開いた括弧の後にスペースを追加しました私が持っていたいリンク)

それはポーではありませんそのようなことをすることは可能ですか?私はdrupalに新しいです。おそらく誰かが私を助けることができます...ありがとう!

答えて

6

これは、テキストをプレーンテキストとして印刷する前に発生します。あなたが交換のプレフィックスに異なる動作t()機能を使用している

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

注意。 @tosを入力するとcheck_plain()が実行され、HTMLエンティティをエンコードするときにHTMLがブラウザによって処理されることはありません。

!tosは、check_plain() 'ではないため、HTMLマークアップを許可します。

+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

これは役に立ちません。しかし、フォームAPIリファレンスでは、これはまだHTMLを出力しないことが混乱しています。 – mAtZ

+1

-1。これは完全に間違っています。 FAPIはHTMLマークアップを許可しますが、@tosはテキストをcheck_plain()にします。 –

+0

大きいthx Ayesh。それが私を助けました!プレースホルダがなければ、すべてうまく動作します。 – mAtZ

関連する問題