Я создал пользовательский контроллер для редактирования и обновления информации о пользователе. Данные пользователя передаются в файл представления, где пользователь может обновить информацию своей учетной записи. Данные извлекаются без ошибок, но когда я обновляю значения, они не меняются. Единственное значение, которое обновляется, - это электронная почта, если я пытаюсь обновить имя или пароль, ничего не обновляется.
Вот мой контроллер, представление и маршруты.
Также, как пользователь данные передаются на страницу учетной записи.
<li><a href="{{ route('users.edit', Auth::user()) }}"><i class="fas fa-user-circle"></i>Account</a></li>
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use Auth;
class UserController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function edit(User $user)
{
$user = Auth::user();
return view('users.account', compact('user'));
}
public function update(User $user)
{
$this->validate(request(), [
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed'
]);
$user->name = request('name');
$user->email = request('email');
$user->password = bcrypt(request('password'));
$user->save();
return back();
}
}
@extends('layouts.template3')
@section('content')
<burger-icon>
{{ Breadcrumbs::render('dashboard') }}
<div class="container">
<div class="form-body">
<h2>Account</h2>
<form method="post" action="{{route('users.update', $user)}}">
{{ csrf_field() }}
{{ method_field('patch') }}
<div class="form-group">
<label for="name" class="">Nickname</label>
<input type="text" class="@error('name') is-invalid @enderror" name="name" value="{{ $user->name }}" />
</div>
<div class="form-group">
<label for="email" class="">{{ __('E-Mail Address') }}</label>
<input type="email" class="@error('email') is-invalid @enderror" name="email" value="{{ $user->email }}" />
</div>
<div class="form-group">
<label for="password" class="">{{ __('Password') }}</label>
<input type="password" class="@error('password') is-invalid @enderror" name="password" />
</div>
<div class="form-group">
<label for="password-confirm" class="">{{ __('Confirm Password') }}</label>
<input type="password" class="" name="password_confirmation" />
</div>
<button type="submit" class="btn-primary">Update</button>
</form>
</div>
</div>
</burger-icon>
@endsection
Route::get('users/{user}', ['as' => 'users.edit', 'uses' => 'UserController@edit']);
Route::patch('users/{user}/update', ['as' => 'users.update', 'uses' => 'UserController@update']);
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}