Tengo un administrador donde puede crear y actualizar usuarios. Hice una nueva solicitud de formulario llamada UserUpdateRequest . ¿Cómo puedo pasar la identificación del usuario para que pueda actualizar los detalles del usuario? Aquí están mis reglas:
// UserUpdateRequest public function rules() { return [ 'firstname' => 'required|min:2|max:255', 'lastname' => 'required|min:2|max:255', 'username' => 'required|max:255', 'password' => 'required|min:6|confirmed', 'email' => 'required|email|max:255|unique:users,email,????', 'contact' => 'required|integer', 'gender' => 'required|in:m,f', 'role_id' => 'required|exists:roles,id', ]; } // Controller public function update(UserUpdateRequest $request, User $user) { $user->update([ 'firstname' => request('firstname'), 'lastname' => request('lastname'), 'username' => request('username'), 'email' => request('email'), 'contact' => request('contact'), 'gender' => request('gender'), 'role_id' => request('role_id'), ]); session()->flash('message', 'User has been successfully added.'); return redirect('/users/' . $user->id); } 'required|email|max:255|unique:users,email,????', es donde estoy confundido.
Esto es lo que hice:
Vista:
<input type="hidden" value="{{ $user->id }}" name="user_id">Controlador:
public function rules() { $id = $this->request->get('user_id'); return [ 'firstname' => 'required|min:2|max:255', 'lastname' => 'required|min:2|max:255', 'username' => 'required|max:255', 'email' => 'required|email|max:255|unique:users,email,'.$id, 'contact' => 'required|integer', 'gender' => 'required|in:m,f', 'role_id' => 'required|exists:roles,id', ]; }rutas/web.php
Route::get('/user/edit/{id}', 'UserController@edit')->name('user.edit'); Route::post('/user/update/{id}', 'UserController@update')->name('user.update');FormularioSolicitud
'email' => ['required',Rule::unique('users')->ignore($this->route('id'))],Dado que el administrador está cambiando de usuario, asumo que ya tiene datos de usuario en su archivo de vista.
puede pasar una entrada oculta en su formulario.
<input type="hidden" value="{{$user->id}}" name="user_id" />y luego recibirlo en su controlador.
$user_id = $request->input('user_id'); $user = \App\User::find($user_id); //validation comes hereEditar Según nueva información
public function update(UserUpdateRequest $request, User $user)debiera ser
public function update(Request $request, User $user)y tienes que llamar a Request en tu controlador;
use Illuminate\Http\Request;después de eso, puede obtener su solicitud como
dd($request->all());pero si está utilizando una solicitud especial, publique su clase UserUpdateRequest .