laravel 4:如何将原始HTML插入标签?

时间:2013-05-17 15:42:54

标签: html label laravel

是否有一些简单的方法将原始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>

7 个答案:

答案 0 :(得分:11)

使用HTML :: decode():

http://forums.laravel.io/viewtopic.php?id=1772

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

答案 1 :(得分:10)

sprintf中使用macro比重新编码快得多:

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

    return sprintf($label, $value);
});

答案 2 :(得分:1)

您可以创建辅助函数(宏),如:

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

{{ HTML::raw(Form::label('input_firstname', 'Prénom <sup>*</sup>')) }}

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

然后我有以下CSS规则

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

这将有效,除非您需要&lt; em&gt; *&lt; / em&gt;对于屏幕阅读器。但是你仍然可以在输入上添加所需的标志。

答案 5 :(得分:-1)

知道了,它正在使用e()帮助函数,该函数使用htmlentities()来标记标签,这会将您的标记转换为&amp;lt;em&amp;gt;*&amp;lt;/em&amp;gt;

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

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

但这远非理想。

答案 6 :(得分:-2)

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