Am quite new to Laravel and I have to create a form for create and a form for edit. In my form I have quite some jquery ajax posts. Am wondering whether Laravel does provide for an easy way for me to use the same form for my edit and create without having to add tons of logic in my code. I don’t want to check if am in edit or create mode every time when assigning values to fields when the form loads. Any ideas on how I can accomplish this with minimum coding?
Advertisement
Answer
I like to use form model binding
so I can easily populate a form’s fields with corresponding value, so I follow this approach (using a user
model for example):
@if(isset($user)) {{ Form::model($user, ['route' => ['updateroute', $user->id], 'method' => 'patch']) }} @else {{ Form::open(['route' => 'createroute']) }} @endif {{ Form::text('fieldname1', Input::old('fieldname1')) }} {{ Form::text('fieldname2', Input::old('fieldname2')) }} {{-- More fields... --}} {{ Form::submit('Save', ['name' => 'submit']) }} {{ Form::close() }}
So, for example, from a controller, I basically use the same form for creating and updating, like:
// To create a new user public function create() { // Load user/createOrUpdate.blade.php view return View::make('user.createOrUpdate'); } // To update an existing user (load to edit) public function edit($id) { $user = User::find($id); // Load user/createOrUpdate.blade.php view return View::make('user.createOrUpdate')->with('user', $user); }