是否有一些简单的方法将原始HTML标记放到标签上?我有这个:
{{ Form::label('firstName', 'First name <em>*</em>', array('class' => 'input_tag')) }}
它产生:
<label class="input_tag" for="firstName">First Name <em>*</em></label>
但标签EM未被解释为应有的。我想要的是:
<label class="input_tag" for="firstName">First Name <em>*</em></label>
答案 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()来标记标签,这会将您的标记转换为&lt;em&gt;*&lt;/em&gt;
。
快速和(非常)脏修复是在第一次调用Helpers.php之前将其添加到start.php或其他位置:
function e($value) { return $value; }
但这远非理想。
答案 6 :(得分:-2)
我相信Form :: label($ name,$ value,$ attributes,$ escape_html)接受第四个参数,告诉它是否不转义html。它默认为true。因此,如果您的预期结果是斜体*,则将false作为第四个参数传递。