Update user profile Laravel

Viewed 112

I have a problem, I cannot update the user profile, when I press "submit" I will get an expired page, how can I solve it?

My form:

<form method="post" class ="tab-pane" id ="edit" action="{{route('profile')}}">
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label">Email</label>
                        <div class="col-lg-9">
                            <input class="form-control" type="email" value={{$user->email}}>
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label">About</label>
                        <div class="col-lg-9">
                            <input class="form-control" type="text" value={{$user->about}}>
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label">Skills</label>
                        <div class="col-lg-9">
                            <input class="form-control" type="text" value={{$user->skills}}>
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label">Hobbies</label>
                        <div class="col-lg-9">
                            <input class="form-control" type="text" value={{$user->hobbies}}>
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label">Address</label>
                        <div class="col-lg-9">
                            <input class="form-control" type="text" value="" placeholder="Street">
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label"></label>
                        <div class="col-lg-6">
                            <input class="form-control" type="text" value="" placeholder="City">
                        </div>
                        <div class="col-lg-3">
                            <input class="form-control" type="text" value="" placeholder="State">
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label">Username</label>
                        <div class="col-lg-9">
                            <input class="form-control" type="text" value={{$user->name}}>
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label">Password</label>
                        <div class="col-lg-9">
                            <input class="form-control" type="password" value={{$user->password}}>
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label"></label>
                        <div class="col-lg-9">
                            <input type="reset" class="btn btn-secondary" value="Cancel">
                            <<button type="submit">submit</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>

My route:

Route::post('/profile', 'UserController@update_Profile');

And my UserController:

public function update_Profile(User $user) {

    $this->validate(request(), [
        'name' => 'required',
        'email' => 'required|email|unique:users',
    ]);

    $user->name = Request::input('name');
    $user->email = Request::input('email');

    $user->save();
    Flash::message('Your account has been updated!');
    return back();
}  

I tried different methods through topics but failed, what do you think is the problem? Maybe because of how I defined view or because of the route?

1 Answers

Put @CSRF in your form. Like so:

<form method="post" class ="tab-pane" id ="edit" action="{{route('profile')}}">
                    @csrf
                    <div class="form-group row">
                        <label class="col-lg-3 col-form-label form-control-label">Email</label>
                        <div class="col-lg-9">
                            <input class="form-control" type="email" value={{$user->email}}>
                        </div>

                    </div>
...
...
</form>

See this: https://laravel.com/docs/5.8/csrf

Related