I am currently rendering and populating a form in laravel using the laravelcollective plugin. this is working as expected:
{!! Form::model($user, ['action' => 'user@updateUser']) !!}
<div class="form-group">
{!! Form::label('user_name', 'Name') !!}
{!! Form::text('user_name') !!}
</div>
<button class="btn btn-success" type="submit">Update</button>
{!! Form::close() !!}
The above code generates the form and populates the input field with the user's name.
If I want to add a class attribute to the form input like so:
{!! Form::text('user_name', '', ['class' => 'form-control']) !!}
It does not populate the input value because in theory I've set the default value (second parameter) to ''
.
Is there a way of populating the value and adding a class without explicitly doing so like this:
{!! Form::text('user_name', $user->user_name, ['class' => 'form-control']) !!}
By doing the above it defeats the object of rendering the form via a model {!! Form::model($user, ['action' => 'user@updateUser']) !!}
as I may as well parse the $user
as a variable onto the template, which I don't want to do.
Then you can use null
instead ""
blank
{!! Form::text('user_name', null , ['class' => 'form-control']) !!}
You can also use old
function
{!! Form::text('user_name', $user->user_name or old('user_name'), ['class' => 'form-control']) !!}
This $user->user_name or old('user_name')
can be expressed as
If $user->user_name
is exist then put value of $user->user_name
otherwise check for old input
which is ""
blank first time and have some value if you redirect back if any error comes.
or simply use isset
method or in php 7 use $user->user_name ?? ''
{!! Form::text('user_name', $user->user_name ?? '', ['class' => 'form-control']) !!}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With