Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I include html within a form label using Laravel Collective?

Reading through this SO thread I have read that I can create a new macro to create custom form inputs.

I am brand new to Laravel development (big surprise) & it seems a tad overkill for such a small thing. Is there a "simpler" way to have something like this:

blade template

{!!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">

Or, is this a case where I just write the html, and then use the form service to create the inputs?

Thank you for your patience and insight.

like image 378
Damon Avatar asked Jan 06 '16 16:01

Damon


2 Answers

The simple way to do this is

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

the last parameter is $escape_html which default value is "true".

like image 186
Salikh Gurgenidze Avatar answered Nov 10 '22 22:11

Salikh Gurgenidze


The Form class attributes will always be escaped (they were in Laravel 4 and still are with Laravel Collective's 5+ support), therefore no HTML is allowed. Since you're needs are so simple, I'd suggest just writing plain HTML.

If you want overkill, maybe something like this in your AppServiceProvider.php:

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

Then, in your Blade templates:

{!! Form::labelWithHTML('firstName', 'First Name<sup>*</sup>') !!}
{!! Form::text('firstName', null, ['class'=>'required']) !!} 
like image 5
Tomas Buteler Avatar answered Nov 10 '22 22:11

Tomas Buteler