2016-01-06 69 views
7

通过this SO thread阅读我已阅读,我可以创建一个新的宏来创建自定义表单输入。如何使用Laravel Collective在表单标签中包含html?

我是Laravel开发的新品牌(很大的惊喜)&对于这么小的东西来说这似乎有点矫枉过正。是否有一个 “简单” 的方式是这样的:

刀模板

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

HTML

<label for="firstName">First Name*</label> 
<input type="text" name="firstName" class="required"> 

或者说,这是我刚写的HTML的情况下, ,然后使用表单服务创建输入?

感谢您的耐心配合和深入见解。

回答

4

FormForm类属性总是会被转义(它们在Laravel 4中,仍然是Laravel Collective的5+支持),因此不允许HTML。由于您的需求非常简单,我建议您只需编写简单的HTML。

如果你要矫枉过正,也许这样的事情在你的AppServiceProvider.php

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

然后,在你的刀片模板:

{!! Form::labelWithHTML('firstName', 'First Name<sup>*</sup>') !!} 
{!! Form::text('firstName', null, ['class'=>'required']) !!} 
+3

就个人而言,我会使用纯HTML作为标签 - 但仍然使用Form :: text作为输入框。它添加了旧的输入等。 –

-1

也许是来不及回答,但你可以这样做:

{!! Html::decode(Form::label('firstName','FirstName: <sup>*</sup>')) !!} 
{!! Form::text('firstName', null, ['class'=>'required']) !!} 
10

简单的方式做,这是

{!! Form::label('labelFor','labelText',[],false) !!} 

最后一个参数是$ escape_html,其默认值为“true”。

+1

这应该是选定的答案,这是正确的,建立在完成这个的方式。 –

+0

我同意这是一个更好的答案,警告说第四个参数仅在5.2+中可用。 –

相关问题