如何使用Laravel Collective在表单标签中包含html?

Dam*_*mon 11 laravel-5.2 laravelcollective

通过这个SO线程阅读我已经读过我可以创建一个新的宏来创建自定义表单输入.

我对Laravel开发来说是一个全新的(大惊喜),对于这么小的事情来说似乎有点过分.是否有一种"更简单"的方式来做这样的事情:

刀片模板

{!!Form::label('firstName', 'First Name<sup>*</sup>') !!}
{!! Form::text('firstName', null, ['class'=>'required']) !!} 
Run Code Online (Sandbox Code Playgroud)

HTML

<label for="firstName">First Name*</label>
<input type="text" name="firstName" class="required">
Run Code Online (Sandbox Code Playgroud)

或者,这是一个我只是编写html,然后使用表单服务来创建输入的情况?

感谢您的耐心和洞察力.

小智 28

这样做的简单方法是

{!! Form::label('labelFor','labelText',[],false) !!} 
Run Code Online (Sandbox Code Playgroud)

最后一个参数是$ escape_html,默认值为"true".

  • 这应该是选定的答案,这是完成此任务的正确的内置方式. (6认同)

Tom*_*ler 5

Form类属性将始终被转义(他们是在Laravel 4,仍然是与Laravel集体的5+支持),因此HTML是不接受.由于您的需求如此简单,我建议您只编写纯HTML.

如果你想要矫枉过正,你可能会这样AppServiceProvider.php:

Form::macro('labelWithHTML', function ($name, $html) {
    return '<label for="'.$name.'">'.$html.'</label>';
});
Run Code Online (Sandbox Code Playgroud)

然后,在您的Blade模板中:

{!! Form::labelWithHTML('firstName', 'First Name<sup>*</sup>') !!}
{!! Form::text('firstName', null, ['class'=>'required']) !!} 
Run Code Online (Sandbox Code Playgroud)

  • 就个人而言,我会使用纯HTML作为标签 - 但仍然使用Form :: text作为输入框.它添加旧的输入等. (3认同)