[英]How To Solve This Trying to get property of non-object Error In Laravel
I'm creating a web site. 我正在创建一个网站。 And I have created a registration page.
我已经创建了一个注册页面。 I want to update my details.
我想更新我的详细信息。
But, It gives me this error and I have also uploaded a picture of errors below. 但是,它给了我这个错误,我还上传了下面的错误图片。 - Error Picture
- 错误图片
ErrorException (E_ERROR) Trying to get property of non-object (View: D:\\wamp64\\www\\FinalProject\\resources\\views\\AdminUpdate.blade.php)
ErrorException(E_ERROR)试图获取非对象的属性(视图:D:\\ wamp64 \\ www \\ FinalProject \\ resources \\ views \\ AdminUpdate.blade.php)
I used dd($edd); 我用dd($ edd); and it gave me correct details.
它给了我正确的细节。 But, when I try with below codes it gives me that above error.
但是,当我尝试下面的代码时,它给了我上面的错误。
How can I Fix this ?? 我怎样才能解决这个问题 ??
Here is my AdminPanel.blade.php 这是我的AdminPanel.blade.php
<table class="table table-bordered">
<tr>
<td> Name </td>
</tr>
@foreach($data as $value )
<tr>
<td> {{ $value->username }} </td>
<td> <a href="edit/{{ $value->id }}"><input type="submit" name="update" value="Update" class="btn-primary"></a> </td>
</tr>
@endforeach
</table>
Here is my AdminPanelController.php 这是我的AdminPanelController.php
public function edit($id)
{
$edd = User::find($id);
//dd($edd);
return view('AdminUpdate', ['edd' => $edd]);
}
public function adminedit($id, Request $request, User $user)
{
// Add Validation
$users = $user->find($id);
$users->username = $request->get('username');
$users->email = $request->get('email');
$users->save();
return redirect()->back();
}
Here is my AdminUpdate.blade.php 这是我的AdminUpdate.blade.php
<form action="edit/{{ $edd[0]->id }}" method="post" enctype="multipart/form-data">
{{ method_field('PUT') }}
{{ csrf_field() }}
<div class="form-group">
<label>Username : *</label>
<input type="text" class="form-control" name="username" value="{{$edd[0]->username}}" placeholder="Enter Your Username" required>
</div>
<div class="form-group">
<label>Email : *</label>
<input type="email" class="form-control" name="email" value="{{$edd[0]->email}}" placeholder="Enter Your Username" required>
</div>
<div class="form-group">
<label>Password : *</label>
<input type="password" class="form-control" name="password" value="{{$edd[0]->password}}" placeholder="Enter Your Password" required>
</div>
<div class="form-group">
<label>Upload Profile Picture :</label>
<input type="file" class="form-control-file" name="file_img" aria-describedby="fileHelp">
<small id="fileHelp" class="form-text text-muted">If U Want , U Can Skip Upload A Profile Picture</small>
</div>
<input type="submit" class="btn btn-primary" value="Update User">
</form>
Here are my Routes. 这是我的路线。
Route::get('/edit/{id}', 'AdminPanelController@edit');
Route::post('/edit/{id}', 'AdminPanelController@adminedit');
User::find()
gives you a single object , not array. User::find()
给您一个对象 ,而不是数组。
So, in blade just use 因此,只需在刀片中使用
$edd->id
Same applies to other instances of $edd
: username, email, password. 同样适用于
$edd
其他实例:用户名,电子邮件,密码。
As a sidenote: you can add a check if user is really found by id
and if not - show 404 page, for example. 作为旁注:您可以添加检查,是否通过
id
确实找到了用户,如果没有,则显示-例如显示404页面。
您不应该写{{ $edd[0]->id }}
来代替这种用法:
{{ $edd->id }}
Change { $edd[0]->id }} line to 将{$ edd [0]-> id}}行更改为
{{ $edd->id }} {{$ edd-> id}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.