首页 > 解决方案 > 通过用户个人资料页面更新用户数据

问题描述

我是 Laravel 的新手。我已经完成了一个自定义配置文件页面,并尝试更新每个用户的值。现在我正在尝试这样

编辑页面

@extends('layouts.admin')
@section('content')
<?php $user = auth()->user(); ?>
<div class="card">
    <div class="card-header">
        {{ trans('global.edit') }} {{ trans('cruds.user.title_singular') }}
    </div>

    <div class="card-body">
        <form action="{{ route('admin.users.updateprofile', $user->id) }}" method="POST" enctype="multipart/form-data">
            @csrf
            @method('POST')
                <div class="row">
                    <div class="form-group col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('name') ? 'has-error' : '' }}">
                        <label for="name">{{ trans('cruds.user.fields.name') }}*</label>
                        <input type="text" id="name" name="name" class="form-control" value="{{ old('name', isset($user) ? $user->name : '') }}" required>
                        @if($errors->has('name'))
                            <em class="invalid-feedback">
                                {{ $errors->first('name') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.name_helper') }}
                        </p>
                    </div>
                    <div class="form-group col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('email') ? 'has-error' : '' }}">
                        <label for="email">{{ trans('cruds.user.fields.email') }}*</label>
                        <input type="email" id="email" name="email" class="form-control" value="{{ old('email', isset($user) ? $user->email : '') }}" required>
                        @if($errors->has('email'))
                            <em class="invalid-feedback">
                                {{ $errors->first('email') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.email_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group col-xl-6 col-lg-6 col-md-6 col-sm-12  {{ $errors->has('address') ? 'has-error' : '' }}">
                        <label for="address">{{ trans('cruds.user.fields.address') }}*</label>
                        <input type="text" id="address" name="address" class="form-control" value="{{ old('address', isset($user) ? $user->address : '') }}" required>
                        @if($errors->has('address'))
                            <em class="invalid-feedback">
                                {{ $errors->first('address') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.address_helper') }}
                        </p>
                    </div>
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('landmark') ? 'has-error' : '' }}">
                        <label for="landmark">{{ trans('cruds.user.fields.landmark') }}*</label>
                        <input type="text" id="landmark" name="landmark" class="form-control" value="{{ old('landmark', isset($user) ? $user->landmark : '') }}" required>
                        @if($errors->has('landmark'))
                            <em class="invalid-feedback">
                                {{ $errors->first('landmark') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.landmark_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('locality') ? 'has-error' : '' }}">
                        <label for="locality">{{ trans('cruds.user.fields.locality') }}*</label>
                        <input type="text" id="locality" name="locality" class="form-control" value="{{ old('locality', isset($user) ? $user->locality : '') }}" required>
                        @if($errors->has('locality'))
                            <em class="invalid-feedback">
                                {{ $errors->first('locality') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.locality_helper') }}
                        </p>
                    </div>
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('city') ? 'has-error' : '' }}">
                        <label for="city">{{ trans('cruds.user.fields.city') }}*</label>
                        <input type="text" id="city" name="city" class="form-control" value="{{ old('city', isset($user) ? $user->city : '') }}" required>
                        @if($errors->has('city'))
                            <em class="invalid-feedback">
                                {{ $errors->first('city') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.city_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('pin') ? 'has-error' : '' }}">
                        <label for="pin">{{ trans('cruds.user.fields.pin') }}*</label>
                        <input type="text" id="pin" name="pin" class="form-control" value="{{ old('pin', isset($user) ? $user->pin : '') }}" required>
                        @if($errors->has('pin'))
                            <em class="invalid-feedback">
                                {{ $errors->first('pin') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.pin_helper') }}
                        </p>
                    </div>
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('country') ? 'has-error' : '' }}">
                        <label for="country">{{ trans('cruds.user.fields.country') }}*</label>
                        <input type="text" id="country" name="country" class="form-control" value="{{ old('country', isset($user) ? $user->country : '') }}" required>
                        @if($errors->has('country'))
                            <em class="invalid-feedback">
                                {{ $errors->first('country') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.country_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('principalname') ? 'has-error' : '' }}">
                        <label for="principalname">{{ trans('cruds.user.fields.principalname') }}*</label>
                        <input type="text" id="principalname" name="principalname" class="form-control" value="{{ old('principalname', isset($user) ? $user->principalname : '') }}" required>
                        @if($errors->has('principalname'))
                            <em class="invalid-feedback">
                                {{ $errors->first('principalname') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.principalname_helper') }}
                        </p>
                    </div>
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('pocname') ? 'has-error' : '' }}">
                        <label for="pocname">{{ trans('cruds.user.fields.pocname') }}*</label>
                        <input type="text" id="pocname" name="pocname" class="form-control" value="{{ old('pocname', isset($user) ? $user->pocname : '') }}" required>
                        @if($errors->has('pocname'))
                            <em class="invalid-feedback">
                                {{ $errors->first('pocname') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.pocname_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('pocnum_one') ? 'has-error' : '' }}">
                        <label for="pocnum_one">{{ trans('cruds.user.fields.pocnum_one') }}*</label>
                        <input type="text" id="pocnum_one" name="pocnum_one" class="form-control" value="{{ old('pocnum_one', isset($user) ? $user->pocnum_one : '') }}" required>
                        @if($errors->has('pocnum_one'))
                            <em class="invalid-feedback">
                                {{ $errors->first('pocnum_one') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.pocnum_one_helper') }}
                        </p>
                    </div>
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('pocnum_two') ? 'has-error' : '' }}">
                        <label for="pocnum_two">{{ trans('cruds.user.fields.pocnum_two') }}*</label>
                        <input type="text" id="pocnum_two" name="pocnum_two" class="form-control" value="{{ old('pocnum_two', isset($user) ? $user->pocnum_two : '') }}" required>
                        @if($errors->has('pocnum_two'))
                            <em class="invalid-feedback">
                                {{ $errors->first('pocnum_two') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.pocnum_two_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('emailid') ? 'has-error' : '' }}">
                        <label for="emailid">{{ trans('cruds.user.fields.emailid') }}*</label>
                        <input type="text" id="emailid" name="emailid" class="form-control" value="{{ old('emailid', isset($user) ? $user->emailid : '') }}" required>
                        @if($errors->has('emailid'))
                            <em class="invalid-feedback">
                                {{ $errors->first('emailid') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.emailid_helper') }}
                        </p>
                    </div>
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('registered_year') ? 'has-error' : '' }}">
                        <label for="registered_year">{{ trans('cruds.user.fields.registered_year') }}*</label>
                        <input type="text" id="registered_year" name="registered_year" class="form-control" value="{{ old('registered_year', isset($user) ? $user->registered_year : '') }}" required>
                        @if($errors->has('registered_year'))
                            <em class="invalid-feedback">
                                {{ $errors->first('registered_year') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.registered_year_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('healthid') ? 'has-error' : '' }}">
                        <label for="healthid">{{ trans('cruds.user.fields.healthid') }}*</label>
                        <input type="text" id="healthid" name="healthid" class="form-control" value="{{ old('healthid', isset($user) ? $user->healthid : '') }}" required>
                        @if($errors->has('healthid'))
                            <em class="invalid-feedback">
                                {{ $errors->first('healthid') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.healthid_helper') }}
                        </p>
                    </div>
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('totalstaff') ? 'has-error' : '' }}">
                        <label for="totalstaff">{{ trans('cruds.user.fields.totalstaff') }}*</label>
                        <input type="text" id="totalstaff" name="totalstaff" class="form-control" value="{{ old('totalstaff', isset($user) ? $user->totalstaff : '') }}" required>
                        @if($errors->has('totalstaff'))
                            <em class="invalid-feedback">
                                {{ $errors->first('totalstaff') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.totalstaff_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12">
                        <label for="exampleFormControlSelect1">Select School</label>
                        <select class="form-control" name="school_name" id="exampleFormControlSelect1">
                            <option> Select School</option>
                            <?php
                                $schools = DB::table('schools')->get();
                            ?>
                            @foreach($schools as $school)
                              <option value="{{$school->name}}">{{$school->name}}</option>
                            @endforeach
                        </select>
                    </div>
                    <div class="form-group  col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('school_branch') ? 'has-error' : '' }}">
                        <label for="school_branch">{{ trans('cruds.user.fields.school_branch') }}*</label>
                        <input type="text" id="school_branch" name="school_branch" class="form-control" value="{{ old('school_branch', isset($user) ? $user->school_branch : '') }}" required>
                        @if($errors->has('school_branch'))
                            <em class="invalid-feedback">
                                {{ $errors->first('school_branch') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.school_branch_helper') }}
                        </p>
                    </div>
                </div>
                <div class="row">
                    <div class="form-group col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('password') ? 'has-error' : '' }}">
                        <label for="password">{{ trans('cruds.user.fields.password') }}</label>
                        <input type="password" id="password" name="password" class="form-control" required>
                        @if($errors->has('password'))
                            <em class="invalid-feedback">
                                {{ $errors->first('password') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.password_helper') }}
                        </p>
                    </div>
                    <div class="form-group col-xl-6 col-lg-6 col-md-6 col-sm-12 {{ $errors->has('roles') ? 'has-error' : '' }}">

                        <label for="roles">{{ trans('cruds.user.fields.roles') }}*</label>
                        <select name="roles[]" id="roles" class="form-control select2" multiple="multiple" required readonly>
                            @foreach($roles as $id => $roles)
                                <option value="{{ $id }}" {{ (in_array($id, old('roles', [])) || isset($user) && $user->roles()->pluck('name', 'id')->contains($id)) ? 'selected' : '' }}>{{ $roles }}</option>
                            @endforeach
                        </select>
                        @if($errors->has('roles'))
                            <em class="invalid-feedback">
                                {{ $errors->first('roles') }}
                            </em>
                        @endif
                        <p class="helper-block">
                            {{ trans('cruds.user.fields.roles_helper') }}
                        </p>
                    </div>
                    <div>

                </div>
                <div class="row">
                    <div class="form-group col-xl-6 col-lg-6 col-md-6 col-sm-12">
                        <input class="btn btn-danger" type="submit" value="{{ trans('global.save') }}">
                    </div>
                </div>
        </form>


    </div>
</div>
@endsection 

对于我这样写的路线

Route::group(['middleware' => ['auth'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
    Route::get('/home', 'HomeController@index')->name('home');
    Route::resource('permissions', 'Admin\PermissionsController');
    Route::post('permissions_mass_destroy', 'Admin\PermissionsController@massDestroy')->name('permissions.mass_destroy');
    Route::resource('roles', 'Admin\RolesController');
    Route::post('roles_mass_destroy', 'Admin\RolesController@massDestroy')->name('roles.mass_destroy');
    Route::resource('users', 'Admin\UsersController');
    Route::get('/pages', 'PageController@index');
    Route::get('/pages/create', 'PageController@create');
    Route::post('/pages/create', 'PageController@store');
    Route::get('/pages/edit/{id}', 'PageController@edit');
    Route::post('/home/edit/{id}', 'PageController@update');
    Route::get('/schools', 'SchoolController@index');
    Route::get('/schools/create', 'SchoolController@create');
    Route::post('/schools/create', 'SchoolController@store');
    Route::get('/schools/edit/{id}', 'SchoolController@edit');
    Route::post('/schools/edit/{id}', 'SchoolController@update');
    Route::post('users_mass_destroy', 'Admin\UsersController@massDestroy')->name('users.mass_destroy');
    Route::get('/user/edit/{id}', 'Admin\UsersController@editprofile')->name('users.editprofile');
    Route::post('/user/edit/{id}', 'Admin\UsersController@updateprofile')->name('users.updateprofile');
});

对于控制器,我这样写

public function editprofile(User $user)
{
    $roles = Role::get()->pluck('name', 'name');

    return view('admin.users.editprofile', compact('user', 'roles'));
}

而Update profile方法是这样的

public function updateprofile(UpdateUsersRequest $request, User $user)
{

    $user->update($request->all());
    $roles = $request->input('roles') ? $request->input('roles') : [];
    $user->syncRoles($roles);

    return redirect()->route('admin.users.editprofile');
}

现在我正在尝试更新在编辑表单中输入的用户值。但现在它向我显示了这个错误。

Missing required parameters for [Route: admin.users.editprofile] [URI: admin/user/edit/{id}].

您能帮我解决错误并理解这一点吗?提前致谢。

标签: laravel

解决方案


更新

您的路线有命名问题!

这里的路线是'admin.users.updateprofile'

<form action="{{ route('admin.users.updateprofile', $user->id) }}" method="POST" enctype="multipart/form-data">

但你的路线说'users.updateprofile'

Route::post('/user/edit/{id}', 'Admin\UsersController@updateprofile')->name('users.updateprofile');

所以你没有进入预期的端点。


错误在这一行

return redirect()->route('admin.users.editprofile');

您不传递 {íd} 参数的地方。改成

return redirect()->route('admin.users.editprofile', ['id' => $user->id]);

文档中查看更多信息。


我也看不到你所有的路线,但'admin.users.editprofile'不应该'users.editprofile'吗?


推荐阅读