【发布时间】:2020-12-12 19:18:52
【问题描述】:
我尝试了几种解决方案,这个确实有效,但我似乎无法更新正在传递的信息。
view.blade.php
<script>
$(document).ready(function(){
$('#frmUpdate').on('submit', function(e){
e.preventDefault();
// var $Firstname = $('#Firstname').val();
// var $Lastname = $('#Lastname').val();
// var $Phone = $('#Phone').val();
// var $Email = $('#Email').val();
// var $Address = $('#Address').val();
// var $username = $('#username').val();
var url = $(this).attr('action');
var data = $(this).serialize();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.post({
url:url,
data:{data},
success:function(data){
console.log(data);
alert("Your Information has been updated.");
},
error:function(data){
alert("Internal Server Error");
}
});
});
});
</script>
<form action="{{ URL::to('/update') }}" method="post" id="frmUpdate">
@csrf
<div class="modal-body">
<input type="hidden" id="id" name="id" value="{{ Auth::user()->id }}">
<input type="hidden" id="username" name="username" value="{{ Auth::user()->Username }}">
<div class="form-row">
<div class="form-group col-sm-12">
<input id="Firstname" type="text" class="form-control form-control-lg @error('Firstname') is-invalid @enderror" placeholder="{{__('Firstname')}}" name="Firstname" required value="{{ Auth::user()->FirstName }}">
@error('Firstname')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 col-sm-12">
<input id="Lastname" type="text" class="form-control form-control-lg @error('Lastname') is-invalid @enderror" placeholder="{{__('Lastname')}}" name="Lastname" required value="{{ Auth::user()->LastName }}">
@error('Lastname')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 col-sm-12">
<input id="Phone" type="text" class="form-control form-control-lg @error('Phone') is-invalid @enderror" onkeypress="return isNumberKey(event)" placeholder="{{__('Phone Number')}}" name="Phone" required value="{{ Auth::user()->MobileNum }}">
@error('Phone')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 col-sm-12">
<input id="Email" type="email" class="form-control form-control-lg @error('Email') is-invalid @enderror" placeholder="{{__('Email')}}" name="Email" required value="{{ Auth::user()->email }}">
@error('Email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<textarea id="Address" type="text" class="form-control form-control-lg @error('Address') is-invalid @enderror" name="Address" placeholder="{{__('Address')}}" required>{{ Auth::user()->Address }}</textarea>
@error('Address')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
<button type="submit" id="updateInfo" class="btn btn-primary">Save</button>
</div>
</form>
控制器.php
public function update(Request $request){
// $this->validate($request,[
// 'Firstname' => 'required|max:255',
// 'Lastname' => 'required|max:255',
// 'Email' => 'required|email',
// 'Address' => 'required'
// ]);
if($request->ajax()){
$data = [
'FirstName' => $request->input('Firstname'),
'LastName' => $request->input('Lastname'),
'MobileNum' => $request->input('Phone'),
'email' => $request->input('Email'),
'Address' => $request->input('Address')
];
$user = User::find(Auth::user()->id);
$user->update($request->all());
// $message = "Your information has been updated!";
// $request->session()->flash('success', $message);
return response(User::find($user->id));
}
}
如您所见,我尝试使用 $data 数组,但它不起作用,而是传递了一个非常奇怪的空值。所以我尝试了$request->all() 我看到了一个使用这个的教程,所以我试了一下。它确实更新了,但也传递了空值。
模型.php
protected $table = 'tableName';
protected $primaryKey = 'id';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'Username','password','MobileNum','AccountNum','FirstName','LastName','Address','email'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function getAuthPassword()
{
return $this->password;
}
public static function updateData($username,$data){
User::where('Username', $username)->update($data);
}
【问题讨论】:
-
您必须先定义
fillable到用户模型,然后才能使用质量分配对link 进行详细检查 -
我已经在我的模型上添加了
flilable -
请分享用户模型。
-
刚刚编辑过!我现在仍在寻找解决方案。
-
@error500 当您调用
$user->update()时,它只是在幕后执行$user->fill()->save()。