0

I have a problem with my laravel project, and I'm not able to figure out what I'm doing wrong.

My project has the following relevant files:

The controller (UserController.php):

<?php

<?php

namespace App\Http\Controllers\Admin;

use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    public function list()
    {

        $users = User::all();

        return view('admin.users.list')->with('users',$users);

    }
    // here we create fuction for edit users
    public function updateUserView(Request $request, $id)
    {
        $user = User::findOrFail($id);
        return view('admin.users.edit')->with('user',$user);
    }

    // here we create function for update button
    public function updateUserPut(Request $request, $id)
    {

        $validated = $request->validate([
            'name' => 'required|max:30',
            'email' => 'required|email',
            'public' => 'boolean',
            'phoneNumber' => '',
            'usertype' => '',
            'password' => 'required|confirmed|min:8|max:255',
        ]);

        $users = User::find($id);
        $users->name = $validated['name'];
        $users->email = $validated['email'];
        $users->public = $validated['public'];
        $users->phoneNumber = $validated['phoneNumber'];
        $users->usertype = $validated['usertype'];
        $users->password = Hash::make($validated['password']);
        $users->update();

        return redirect('/admin/users')->with('status','User is updated');
    }

public function createUserView()
{
    return view('admin.users.create');
}

    public function createUserPost(Request $request)
    {

        $validated = $request->validate([
            'name' => 'required|max:30',
            'email' => 'required|email|unique:users',
            'public' => 'boolean',
            'phoneNumber' => '',
            'usertype' => '',
            'password' => 'required|confirmed|min:8|max:255',
        ]);

        User::create([
        'name' => $validated['name'],
        'email' => $validated['email'],
        'public' => $validated['public'],
        'phoneNumber' => $validated['phoneNumber'],
        'usertype' => $validated['usertype'],
        'password' => Hash::make($validated['password'])
        ]);

        return redirect('/admin/users')->with('status','User is created');
    }

    //delete function
    public function deleteUser($id)
    {
        $users = User::findOrFail($id);
        $users->delete();

        return redirect('/admin/users')->with('status','User deleted');

    }
}

The migration (2014_10_12_000000_create_users_table.php):

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->boolean('public')->default(0);
            $table->string('phoneNumber')->nullable();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('usertype')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();

            //Hier komt de aanvullende informatie die op de profielpagina wordt getoond
            $table->string('workExperience')->nullable(); //de werkervaring van de betreffende gebruiker
            $table->string('smallBiography')->nullable(); //beschrijving over hoe de betreffende gebruiker is begonnen met zijn werk.
            $table->string('motivation')->nullable(); //beschrijving over wat de betreffende gebruiker motiveert, om zijn werk te doen.
            $table->string('interests')->nullable(); //beschrijving waarom gebruiker het vak hem zo intresseert.
            $table->string('hobbies')->nullable(); //hobbies van gebruiker
            $table->string('function')->nullable(); //Functietitel van gebruiker

            //Profile social links
            $table->string('website')->nullable(); //website van gebruiker
            $table->string('twitter')->nullable(); //website van gebruiker
            $table->string('instagram')->nullable(); //website van gebruiker
            $table->string('facebook')->nullable(); //website van gebruiker
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

The view for editing an user (edit.blade.php):

@extends('layouts.master')

@section('title')
            Edit User:
@endsection()

@section('content')

<div class="container">
    <div class="row">
        <div class="col-md-12"><!-- 12 row -->
            <div class="card">
                <div class="card-header">
                    <h3>Edit User</h3>

                    @if ($errors->any())
                    <div class="alert alert-danger">
                        <ul>
                            @foreach ($errors->all() as $error)
                                <li>{{ $error }}</li>
                            @endforeach
                        </ul>
                    </div>
                @endif
                </div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-8"> <!--col-md-8 means 8 row  and form put into one row and updtate the button below-->
                            <form action="/admin/user/edit/{{ $user->id }}" method="POST" ><!-- here we update the button-->
                                {{ csrf_field() }}
                                {{ method_field('PUT') }}
                        <div class="form-group">
                            <label>Name</label>
                            <input type="text" name="name" value="{{ $user->name }}" class="form-control">
                        </div>

                        <div class="form-group">
                            <label>E-mail</label>
                            <input type="text" name="email" value="{{ $user->email }}" class="form-control">
                        </div>

                         <div class="form-group">
                            <label>Public</label>
                            <input type="checkbox" name="public" value="{{ $user->public }}" class="form-control">
                        </div>

                         <div class="form-group">
                            <label>Phone number</label>
                            <input type="text" name="phoneNumber" value="{{ $user->phoneNumber }}" class="form-control">
                        </div>

                        <div class="form-group">
                            <label>Give Role</label>
                            <select name="usertype" class="form-control">
                                <option value="admin">Admin</option>
                                <option value="vendor">Vendor</option>
                                <option value="">None</option>
                            </select>
                        </div>

                         <div class="form-group">
                            <label>Password</label>
                            <input type="password" name="password" class="form-control">
                        </div>

                         <div class="form-group">
                            <label>Confirm password</label>
                            <input type="password" name="password_confirmation" class="form-control">
                        </div>

                        <button type="submit" class="btn btn-success">Submit</button>
                        <a href="/admin/users" class="btn btn-danger">Cancel</a>
                    </form>
                        </div>
                    </div>

                </div>

            </div>
        </div>
    </div>
</div>

@endsection()

@section('scripts')


@endsection()

Routes (web.php):

//USERS

    //list
    Route::get('/admin/users','App\Http\Controllers\Admin\UserController@list')->name('users');
    //create
    Route::get('/admin/user/create','App\Http\Controllers\Admin\UserController@createUserView');
    //create update
    Route::post('/admin/user/create','App\Http\Controllers\Admin\UserController@createUserPost');
    //update
    Route::get('/admin/user/edit/{id}','App\Http\Controllers\Admin\UserController@updateUserView');
    //update store
    Route::put('/admin/user/edit/{id}','App\Http\Controllers\Admin\UserController@updateUserPut');
    //delete
    Route::delete('/admin/user/delete/{id}','App\Http\Controllers\Admin\UserController@deleteUser');

When I click the Submit button on the edit.blade.php file, It says that the 'public' index is undefined. I double checked the checkbox names and validation, but everything just looks fine.

Does anybody see why the checkbox data of 'public' is not received correctly by the controller?

Thank you for helping

Regards

Dave

Dave Hulst
  • 39
  • 6

0 Answers0