7

是否有一些简单的方法可以将原始 HTML 标记添加到标签?我有这个:

{{ Form::label('firstName', 'First name <em>*</em>', array('class' => 'input_tag')) }}

它产生:

<label class="input_tag" for="firstName">First Name &lt;em&gt;*&lt;/em&gt;</label>

但是标签 EM 没有按应有的方式解释。我想要的是:

<label class="input_tag" for="firstName">First Name <em>*</em></label>
4

7 回答 7

13

使用HTML::decode()

{!! HTML::decode(Form::label('firstName', 'First name <em>*</em>', array('class' => 'input_tag'))) !!}
于 2013-08-26T16:02:57.387 回答
12

sprintf在 a中使用macro比重新解码要快得多:

Form::macro('rawLabel', function($name, $value = null, $options = array())
{
    $label = Form::label($name, '%s', $options);

    return sprintf($label, $value);
});
于 2013-11-22T23:48:28.810 回答
1

您可以创建一个辅助函数(宏),就像:

HTML::macro('raw', function($htmlbuilder) {
   return htmlspecialchars_decode($htmlbuilder);
});

在你看来:

{{ HTML::raw(Form::label('input_firstname', 'Prénom <sup>*</sup>')) }}
于 2013-06-17T20:11:12.240 回答
0

对于必需的输入,我没有尝试将 HTML 添加到标签中,而是添加了一个类“必需输入”(或其他东西)。

然后我有以下CSS规则

label.required-input:before {
    content: ' * ';
    color: #f00;
}

除非您需要 <em>*</em> 用于屏幕阅读器,否则这将起作用。但是您仍然可以在输入中添加所需的标志。

于 2013-08-22T19:27:01.013 回答
0

我经常将原始 html 用于表单输入和标签,因为我发现它更易于阅读和使用 html5 属性,例如 required 和 placeholder。这个表单是一个很好的例子,展示了如何将原始 html 与 Input::old 一起使用,它允许您捕获旧输入。https://github.com/Zizaco/confide/blob/master/src/views/login.blade.php

于 2013-05-17T21:28:29.297 回答
-1

明白了,它使用 e() 辅助函数,该函数使用 htmlentities() 来格式化您的标签,这会将您的标签转换为&amp;lt;em&amp;gt;*&amp;lt;/em&amp;gt;.

快速和(非常)肮脏的修复是在第一次调用 Helpers.php 之前将其添加到您的 start.php 或其他地方:

function e($value) { return $value; }

但这远非理想。

于 2013-05-17T17:13:15.333 回答
-2

我相信 Form::label($name, $value, $attributes, $escape_html) 需要第四个参数,告诉它是否不转义 html。它默认为真。因此,如果您的预期结果是斜体 *,请将 false 作为第四个参数传递。

于 2013-05-18T11:30:01.940 回答