i ein Problem Bearbeitung Benutzer registriert, ich brauche Benutzerinformationen zu aktualisieren, aber ich habe ein Problem:Laravel 5.1 - Panel Admin - Update User
- Update-E-Mail-Benutzer, (Fehler E-Mail vorhanden ist), ich brauche E-Mail ignorieren, dass Benutzerbearbeitung.
- Andere Informationen werden nicht aktualisiert.
- Passwort aktualisieren IF neues Passwort eingegeben.
ich benutze Ressource-Controller.
UserController.php
namespace dixard\Http\Controllers\Admin;
use Illuminate\Http\Request;
use dixard\Http\Requests;
use dixard\Http\Controllers\Controller;
// colleghiamo al modello
use dixard\User;
// ci serve per validare
use Validator;
//per aggionare password
use Hash;
public function update(Request $request, User $user)
{
$id= $user->id;
// i want ignora id of user edited
$rules = [
'name' => 'required',
'lastname' => 'required',
'username' => 'required|max:50|',
'birth' => 'required',
'country' => 'required',
'usertype' => 'required',
'email' => 'required|email|unique:users'.',email,' . $id,
];
$messages = [
'name.required' => 'Campo nome richiesto',
'lastname.required' => 'Campo cognome richiesto',
'username.required' => 'Campo username richiesto',
'username.max' => 'Campo massimo 50 caratteri',
'birth.required' => 'Campo nascita richiesto',
'country.required' => 'Campo paese richiesto',
'usertype.required' => 'Campo tipologia richiesto',
'email.required' => 'Campo email richiesto',
'email.email' => 'formato email errato ',
'email.unique' => 'Email già esistente',
'password.min' => 'Campo password minimo 4 caratteri',
'password.max' => 'Campo password massimo 18 caratteri',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->fails()){
return redirect('admin/user')->withErrors($validator);
}
// if there is not any error go to update
else{
// if email id different by input, so if email input update also email
if($user->email != $request->email){
$s = new User;
$data = array(
'name' => $request->get('name'),
'lastname' => $request->get('lastname'),
'username' => $request->get('username'),
'email' => $request->get('email'),
'password' => $request->get('password'),
'birth' => $request->get('birth'),
'country' => $request->get('country'),
'usertype' => $request->get('usertype'),
);
$s->where($id, $request->get('id'))->update($data);
return redirect('admin/user')->with('message', 'Updated successfully');
}
// If email input doesnt change update all (not email)
else{
$s = new User;
$data=array(
'name' => $request->get('name'),
'lastname' => $request->get('lastname'),
'username' => $request->get('username'),
'password' => $request->get('password'),
'birth' => $request->get('birth'),
'country' => $request->get('country'),
'usertype' => $request->get('usertype'),
);
$s->where($id, '=', $request->get('id'))->update($data);
return redirect('admin/user')->with('message-error', 'error');
}
}
}
routes.php
Route::resource('admin/user','Admin\UserController');
Route::bind('user', function($user){
return dixard\User::find($user);
});
Modell user.php
protected $table = 'users';
protected $fillable = [
'name',
'username',
'lastname',
'birth',
'profile',
'country',
'usertype',
'email',
'password',
'social',
'confirm_token',
'active',
];
// Ogni utente HA tanti prodotti.
public function products()
{
return $this->hasMany('dixard\Product');
}
protected $hidden = ['password', 'remember_token'];
// setare la password ogni volta che viene cambiata
public function setPasswordAttribute($valor){
//se non è vuota viene applicato hash
if(!empty($valor)) {
$this->attributes['password']= \Hash::make($valor);
}
}
edit.php view page
{!! Form :: open ([ 'Weg' => 'admin.user.update', 'class' => 'form horizontale Form-label-links']
)!!}
<input type="hidden" name="_method" value="PUT">
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Nome<span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" id="name" name="name" class="form-control col-md-7 col-xs-12" value="{{$user->name}}">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="lastname">Cognome<span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" id="lastname" name="lastname" class="form-control col-md-7 col-xs-12" value="{{$user->lastname}}">
</div>
</div>
.... So for all fields inputs
<a href="{{url('admin/user')}}" class="btn btn-warning">cancel</a>
<button type="submit" class="btn btn-success">update</button>
</div>
</div>
{!! Form::close()!!}
Vielen Dank für Ihre Hilfe!
Ich habe auf dem Formular hinzugefügt: {!! Form :: open (['route' => ['admin.user.update', $ user-> id], ...]) !!} Jetzt habe ich diesen FEHLER ----> SQLSTATE [42S22]: Spalte nicht gefunden: 1054 Unbekannte Spalte '45' in 'Where-Klausel' (SQL: Update 'Benutzer' Satz' Name' = Test, 'Nachname' = Test,' Benutzername' = Test, 'E-Mail' = [email protected] , 'password' = 123456,' birth' = 2008-07-24, 'country' = Italien,' usertype' = 0, 'updated_at' = 2016-05-06 17:24:54 wo' 45' ist null) –