我有一个问题编辑用户注册,我需要更新信息的用户,但我有问题:Laravel 5.1 - 管理面板 - 更新用户
- 更新电子邮件用户,(错误电子邮件存在的话),我需要忽略电子邮件中用户编辑。
- 其他信息不会更新。
- 更新密码如果插入新密码。
我正在使用资源控制器。
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);
});
模型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视图页
{!!表::打开([ '路线'=> 'admin.user.update', '阶级'=> '形横形标签左']
)!!}
<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()!!}
谢谢您的帮助!
我添加在窗体上:{!! Form :: open(['route'=> ['admin.user.update',$ user-> id],...])!!}现在我有了这个ERROR ----> SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'45'(SQL:更新'users'设置了'name' = test,'lastname' = test,'username' = test,'email' = [email protected] ,'password' = 123456,'birth' = 2008-07-24,'country' =意大利,'usertype' = 0,'updated_at' = 2016-05-06 17:24:54其中'45'为空) –