我正在尝试创建用户CRUD的更新,但是现在我在此输入中传递了“ edit”视图中电子邮件的值,现在...当我尝试更新时,我无法执行此操作,因为它有一个唯一的电子邮件请求:用户。
我正在通过vue和axios传递可见的数据。后端是Laravel。
视图编辑:
<div class="form-group">
<label for="email">Email <span class="help"></span></label>
<input type="email" name="email"
class="form-control form-control-line" v-model="fillUser.email">
</div>
App.js
editUser: function(user){
this.fillUser.id = user.id;
this.fillUser.name = user.name;
this.fillUser.fLastName = user.fLastName;
this.fillUser.sLastName = user.sLastName;
this.fillUser.age = user.age;
this.fillUser.email = user.email;
this.fillUser.password = user.password;
$('#edit').modal('show');
},
updateUser: function(id){
// alert('Nada man');
var url = 'users/' + id;
axios.put(url, this.fillUser).then(response => {
this.getUsers();
this.fillUser = {'id' : '','name' : '','fLastName' : '','sLastName' : '','age' : '','email' : '','password' : ''};
this.errors = [];
$('#edit').modal('hide');
toastr.success('Usuario actualizado con éxito');
}).catch(error => {
this.errors = error.response.data
});
},
控制器:
public function update(Request $request, $id)
{
$this->validate($request,[
'email' => 'unique:users',
]);
$usuario = User::whereId($id)->firstOrFail();
$usuario->name = $request->get('name');
$usuario->fLastName = $request->get('fLastName');
$usuario->sLastName = $request->get('sLastName');
$usuario->age = $request->get('age');
$usuario->email = $request->get('email');
// Variables
$contraseña = $request->get('password');
// Si la contraseña está seteada la actualiza, si no es así no deja llenarla de un campo vacío
if(isset($contraseña))
{
$usuario->password = Hash::make($request->get('password'));
}
$usuario->save();
}
我想知道如何正确执行更新,如果电子邮件字段未经历未更新的更改,是否经历了更改而不是更新。
答案 0 :(得分:1)
您可以发送old_email隐藏类型
if($request->get('email') != $request->get('old_email')){
$this->validate($request,[
'email' => 'unique:users',
]);
}