Php Laravel 5.1-管理面板-更新用户
我在编辑注册用户时遇到问题,我需要更新用户信息,但我遇到问题:Php Laravel 5.1-管理面板-更新用户,php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,我在编辑注册用户时遇到问题,我需要更新用户信息,但我遇到问题: 更新电子邮件用户,(错误电子邮件存在),我需要忽略用户编辑的电子邮件 其他信息不更新 如果插入新密码,则更新密码 我正在使用资源控制器 UserController.php namespace dixard\Http\Controllers\Admin; use Illuminate\Http\Request; use dixard\Http\Requests; use dixard\Http\Controllers\Con
- 更新电子邮件用户,(错误电子邮件存在),我需要忽略用户编辑的电子邮件李>
- 其他信息不更新
- 如果插入新密码,则更新密码李>
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);
});
model 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查看页面
{!!Form::open(['route'=>'admin.user.update','class'=>'Form-horizontal-Form-label left']
)!!}
<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::close()!!}
谢谢你的帮助 变化:
'email' => 'required|email|unique:users'.',email,' . $id,
致:
更改您的路线,并向其添加用户id,因为这是一种更新方法:
{!! Form::open(['route'=> ['admin.user.update', $user->id], ...])!!}
您没有将用户id传递给路由,因此在控制器中,用户可能为空。在这种情况下,验证不会通过,因为id为null,所以不会跳过当前用户,它会检查用户表中的所有记录。我在表单上添加了:{!!表单::打开(['route'=>['admin.user.update',$user->id],…])!!}现在我有了这个错误---->SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“45”(SQL:update
users
setname
=test,lastname
=test,username
=test,email
=test@test.com,密码
=123456,出生
=2008-07-24,国家
=意大利,用户类型
=0,更新时间
=2016-05-06 17:24:54其中45
i(空)
{!! Form::open(['route'=> ['admin.user.update', $user->id], ...])!!}