5

是否可以在复选框的标签/标题中添加一个简单的 html 链接?我尝试了以下代码:

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

但这会产生以下标签(html 标记不是“翻译”的):

"您必须接受我们的<a href="/node/6">服务条款</a>和<a href="/node/7">法律</a> *"

(我在左括号后添加了空格,这样它就不会转换为我想要的链接)

难道不能做这样的事情吗?我是drupal的新手。也许有人可以帮助我...谢谢!

4

2 回答 2

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。

于 2012-11-01T21:53:34.017 回答
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')
  )
);

希望这行得通……穆罕默德。

于 2012-11-01T19:33:10.123 回答