[英]Edit profile doesnt edit laravel
就像標題所說的那樣,當我轉到 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 路線有問題嗎?
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();
}
請使用此代碼。
您沒有通過驗證規則。 有了這個:
'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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.