【问题标题】:Edit profile doesnt edit laravel编辑个人资料不会编辑 laravel
【发布时间】:2020-03-14 13:45:18
【问题描述】:

就像标题说的那样,当我转到 users/1 时,它会向我显示表单,在我更改某些内容并按确认后它不会更新,无论是在视图中还是在数据库中。这可能是什么问题?

我的观点edit.blade.php

  <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header"><h2 style="text-align:center;">Edit Your Profile</h2></div>
                    <div class="card-body">
                      <form method="post" action="{{route('users.update',$user)}}">
                        {{ csrf_field() }}
                        {{ method_field('patch') }}
                      <div class="form-group row">
                          <label for="org_name" class="col-md-4 col-form-label text-md-right">{{ __('Organisation Name ') }}</label>

                          <div class="col-md-6">
                            <input id="org_name" name="org_name" type="text" class="form-control"value="{{$user->org_name}}">

                              @error('org_name')
                                  <span class="invalid-feedback" role="alert">
                                      <strong>{{ $message }}</strong>
                                  </span>
                              @enderror
                          </div>
                      </div>
                      <div class="form-group row">
                          <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>

                          <div class="col-md-6">
                              <input id="email" type="email" class="form-control" name="email" value="{{ $user->email }}">

                              @error('email')
                                  <span class="invalid-feedback" role="alert">
                                      <strong>{{ $message }}</strong>
                                  </span>
                              @enderror
                          </div>
                      </div>
                      <div class="form-group row">
                          <label for="username" class="col-md-4 col-form-label text-md-right">{{ __('Username') }}</label>

                          <div class="col-md-6">
                              <input id="username" type="username" class="form-control" name="username" value="{{ $user->username }}">

                              @error('username')
                                  <span class="invalid-feedback" role="alert">
                                      <strong>{{ $message }}</strong>
                                  </span>
                              @enderror
                          </div>
                      </div>
                      <div class="form-group row">
                          <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>

                          <div class="col-md-6">
                              <input id="password" type="password" class="form-control" name="password" >

                              @error('password')
                                  <span class="invalid-feedback" role="alert">
                                      <strong>{{ $message }}</strong>
                                  </span>
                              @enderror
                          </div>
                      </div>

                      <div class="form-group row">
                          <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>

                          <div class="col-md-6">
                              <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
                          </div>
                      </div>
                      <div class="form-group row">
                          <label for="country" class="col-md-4 col-form-label text-md-right">{{ __('Country') }}</label>

                          <div class="col-md-6">
                              <input id="country" type="text" class="form-control" name="country" value="{{$user->country}}">

                              @error('country')
                                  <span class="invalid-feedback" role="alert">
                                      <strong>{{ $message }}</strong>
                                  </span>
                              @enderror
                          </div>
                      </div>
                      <div class="form-group row">
                          <label for="org_type" class="col-md-4 col-form-label text-md-right">{{ __('Organisation Type') }}</label>

                          <div class="col-md-6">
                              <input id="org_type" type="text" class="form-control" name="org_type" placeholder="Vet/Uni" value="{{$user->org_type}}" >

                              @error('org_type')
                                  <span class="invalid-feedback" role="alert">
                                      <strong>{{ $message }}</strong>
                                  </span>
                              @enderror
                          </div>
                      </div>
                      <div class="form-group row">
                          <label for="depart" class="col-md-4 col-form-label text-md-right">{{ __('Department') }}</label>

                          <div class="col-md-6">
                              <input id="depart" type="text" class="form-control" name="depart" value="{{ $user->depart}}">

                              @error('depart')
                                  <span class="invalid-feedback" role="alert">
                                      <strong>{{ $message }}</strong>
                                  </span>
                              @enderror
                          </div>
                        </div>
                        <div class="form-group row mb-0">
                          <div class="col-md-6 offset-md-4">
                            <button type="submit" class="btn btn-primary">
                              Edit
                            </button>

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

我的用户控制器

class UserController extends Controller
{
  public function __construct()
  {
      $this->middleware('auth');
  }

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

  public function update(User $user)
  {


        $this->validate(request(), [
          'org_name' => ['required', 'string', 'max:255','unique:users'],
          'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
          'username' => ['required', 'string','max:255', 'unique:users'],
          'password' => ['required', 'string', 'min:8', 'confirmed'],
          'country' => ['required', 'string', 'max:255'],
          'org_type' => ['required', 'string', 'max:255'],
          'depart' => ['required', 'string', 'max:255'],
            ]);

            $user->org_name = request('org_name');
            $user->email = request('email');
            $user->username = request('username');
            $user->password = bcrypt(request('password'));
            $user->country = request('country');
            $user->org_type = request('org_type');
            $user->depart = request('depart');


            $user->save();

            return back();

        }



  }

我的路线

Route::get('users/{user}',  ['as' => 'users.edit', 'uses' => 'UserController@edit']);
Route::patch('users/{user}/update',  ['as' => 'users.update', 'uses' => 'UserController@update']);

提前致谢!我认为 users/1/update 路由有问题?

【问题讨论】:

  • $this-&gt;validate(... 更改为$validatedData = $this-&gt;validate(... 并转储$validatedData 变量
  • 您应该只将$user-&gt;id 发送到您的更新路线,然后,在您的update() 函数中,您应该这样做$userToUpdate = User::find($user-&gt;id) 并设置它的新值然后$userToUpdate-&gt;save() 然后@987654331 @
  • 我认为你的请求没有正确使用,你应该使用 $request->get('email') 而不是 $request->('email)
  • @Farid 你好,这有什么变化?我会尽快尝试一下
  • @swadhwa 我如何转储变量?

标签: php mysql laravel pivot


【解决方案1】:
public function update(Rrequest $request, User $user)
 {

    $this->validate($request, [
      'org_name' => 'required|string|max:255|unique:users,org_name,'.$user->id,
      'email' => 'required|string|email|max:255|unique:users,email,'.$user->id,
      'username' => 'required|string|max:255|unique:users,username,'.$user->id,
      'password' => 'required|string|min:8',
      'country' => 'required|string|max:255',
      'org_type' => 'required|string|max:255',
      'depart' => 'required|string|max:255',
    ]);

        $user->org_name = $request->get('org_name');
        $user->email = $request->get('email');
        $user->username = $request->get('username');
        $user->password = bcrypt($request->get('password'));
        $user->country = $request->get('country');
        $user->org_type = $request->get('org_type');
        $user->depart = $request->get('depart');

        $user->save();

    return back();

 }

请使用此代码。

【讨论】:

  • 你好朋友这个给我一个错误。SQLSTATE[42S22]: Column not found: 1054 Unknown column '4' in 'where clause' (SQL: select count(*) as aggregate from @987654322 @ where 4 = Fredericko111)。为什么 .$user->id 返回 4?
  • 您好,我更新了答案,请尝试使用这个。用上面的替换你的更新函数。
  • 非常感谢!!!它成功了,你能解释一下为什么会这样吗?
  • 好吧,这个验证规则将验证 org_name 在 users 表中是否是唯一的,但它自己除外。您的代码除了自身没有任何规则。这就是您的系统返回验证错误的原因。如果您将 toastr 或 alert 用于显示错误,您将能够看到验证错误。我认为您确实在系统中设置了任何警报。 :)
【解决方案2】:

您没有通过验证规则。有了这个:

'org_name' => ['required', 'string', 'max:255','unique:users'],

您是说org_name 必须是唯一的,但您必须在更新中指定没有自己是唯一的。

你可以试试这样的:

Rule::unique('users')->ignore($user->id, 'id')

或类似的东西:

'org_name' => 'unique:users,org_name,id_to_ignore'

【讨论】:

  • .hello 朋友,我把它放到了我的代码中,但没有任何改变。当我更改表单中的每个字段并按提交时,它只会回到更改之前的原始输入字段
  • $validator-&gt;messages()-&gt;all() 试试这个,看看它会返回什么。另外,我建议你使用这个$validator = Validator::make($request-&gt;all(), []);
猜你喜欢
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
相关资源
最近更新 更多