jeudi 4 novembre 2021

update checkbox value in laravel 8 (blade/ controller )

I'm beginner in laravel and I want to update multiple checkboxes in database .. when I click at update button automatically my inputs show old value also my permissions are checked by old value to update it ..

relation between user and permission is manytomany .. I have another table named userpermissions who has id_user and id_permission

this is my update form in ( edit.blade.php)

<form action="" method="POST">
                                    @csrf
                                    @method('PUT')
                                    <div class="row">
                                        <div class="col-md-6">
                                            <div class="form-group">
                                                <label>Name</label>
                                                <input type="text" name="name" id="name" required class="form-control" value="">
                                                @error('name')
                                                    <ul class="alert"><li class="text-danger"></li></ul>
                                                @enderror
                                            </div>
                                        </div>
                                        <div class="col-md-6">
                                            <div class="form-group">
                                                <label>Email</label>
                                                <input type="email" name="email" id="email" required class="form-control" value="">
                                            </div>
                                        </div>
                                        <div class="col-md-12">
                                            <div  class="form-group">
                                            @foreach($permissions as $permission)
                                                <input type="checkbox" name="data[]" value=""
                                                <?php if( in_array($permission->id, $user->userPermissions->pluck('permission_id')->toArray())){ echo 'checked="checked"'; } ?>/>
                                               
                                                @if($loop->iteration % 3 == 0 ) <br> @else @endif
                                                @endforeach
                                            </div>
                                        </div>

                                    </div>
                                    <div class="text-right mt-4">
                                        <button type="submit" class="btn btn-primary"> Add</button>
                                    </div>
                                </form>

and this is my controller where I think have a problem with methods :

edit function

 public function edit(User $user)
{
    $permissions = Permission::get();
    return view('users.edit', compact('user','permissions'));
}

update function :

public function update(UserRequest $request,User $user)
{
    $user->update(
        $request->only('name', 'email')
    );
    $user->userPermissions()->save($request->input('data'));
    return redirect()->back()->with('status','user updated !');
}

Thanks for advance !




Aucun commentaire:

Enregistrer un commentaire