Laravel 用户编辑
Laravel user edit
我有来自 DB 的用户详细信息,并使用 blade 循环和编辑按钮进行打印。现在我想要,如果我单击按钮,我需要为用户单击的按钮的用户详细信息。
我尝试使用隐藏输入字段 <input type="hidden" value="{{$user->email}}" name="email">
在我的控制器中,我只打印表单提交中的值。但我只得到最后一个用户。
往下看,希望你能看懂..
<div class="content-wrapper">
<div class="flex-center position-ref full-height">
<form action="{!!url('/delete')!!}" method="post"> {!!csrf_field()!!}
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Role</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{$user->id}}</td>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td> <input type="hidden" value="{{$user->email}}" name="email">
<td>{{$user->role}}</td>
<td>
<div class="btn-group">
<button type="submit" class="btn btn-primary btn-sm" name="edit" >Edit</button>
<button type="submit" class="btn btn-primary btn-sm" name="delete" >Delete</button>
<button type="submit" class="btn btn-primary btn-sm" name="make" >Make Admin</button>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</form>
</div>
</div>
我认为那是因为您对所有用户的隐藏字段使用相同的名称 "email"。它正在被覆盖,因为 form is same 。
相反,在循环中添加 form
标记并删除 table.
之前的标记
@foreach($users as $user)
<form action="{!!url('/delete')!!}" method="post"> {!!csrf_field()!!}
<tr>
<td>{{$user->id}}</td>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td> <input type="hidden" value="{{$user->email}}" name="email">
<td>{{$user->role}}</td>
<td>
<div class="btn-group">
<button type="submit" class="btn btn-primary btn-sm" name="edit" >Edit</button>
<button type="submit" class="btn btn-primary btn-sm" name="delete" >Delete</button>
<button type="submit" class="btn btn-primary btn-sm" name="make" >Make Admin</button>
</div>
</td>
</tr>
</form>
@endforeach
或者,您可以在循环之外放置一个隐藏的电子邮件字段,并在提交前使用 JS 为其分配值。
第 1 步:将数据属性 (data-email
) 添加到您的按钮以接收电子邮件。同时添加一个常用的 class 名称来捕捉点击事件。 (见JS部分)
<button type="button" class="test-btn btn btn-primary btn-sm" name="edit" data-email="{{$user->email}}" >Edit</button>
<button type="button" class="test-btn btn btn-primary btn-sm" name="delete" data-email="{{$user->email}}" >Delete</button>
<button type="button" class="test-btn btn btn-primary btn-sm" name="make" data-email="{{$user->email}}" >Make Admin</button>
第 2 步:将 email
隐藏字段移出循环,值为空。
<form action="{!!url('/delete')!!}" method="post" id="test-form"> {!!csrf_field()!!}
<input type="hidden" value="" name="email" id="email">
第 3 步:添加 JS 以捕获按钮上的点击事件,并将点击按钮的电子邮件的值分配给电子邮件文本字段。
$(".test-btn ").on("click",function(e){
//assign the email value from button to variable
email = $(this).attr(data-email);
//assign the email value to email hidden field
$("#email").value(email);
//submit the form
$("#test-form").submit();
});
假设您希望在单击编辑按钮时转到包含用户详细信息的编辑页面。
<a href="{{ route('your_route_name',$user->id) }}" class="test-btn btn btn-primary btn-sm">Edit</a>
我有来自 DB 的用户详细信息,并使用 blade 循环和编辑按钮进行打印。现在我想要,如果我单击按钮,我需要为用户单击的按钮的用户详细信息。
我尝试使用隐藏输入字段 <input type="hidden" value="{{$user->email}}" name="email">
在我的控制器中,我只打印表单提交中的值。但我只得到最后一个用户。
往下看,希望你能看懂..
<div class="content-wrapper">
<div class="flex-center position-ref full-height">
<form action="{!!url('/delete')!!}" method="post"> {!!csrf_field()!!}
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Role</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{$user->id}}</td>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td> <input type="hidden" value="{{$user->email}}" name="email">
<td>{{$user->role}}</td>
<td>
<div class="btn-group">
<button type="submit" class="btn btn-primary btn-sm" name="edit" >Edit</button>
<button type="submit" class="btn btn-primary btn-sm" name="delete" >Delete</button>
<button type="submit" class="btn btn-primary btn-sm" name="make" >Make Admin</button>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</form>
</div>
</div>
我认为那是因为您对所有用户的隐藏字段使用相同的名称 "email"。它正在被覆盖,因为 form is same 。
相反,在循环中添加 form
标记并删除 table.
@foreach($users as $user)
<form action="{!!url('/delete')!!}" method="post"> {!!csrf_field()!!}
<tr>
<td>{{$user->id}}</td>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td> <input type="hidden" value="{{$user->email}}" name="email">
<td>{{$user->role}}</td>
<td>
<div class="btn-group">
<button type="submit" class="btn btn-primary btn-sm" name="edit" >Edit</button>
<button type="submit" class="btn btn-primary btn-sm" name="delete" >Delete</button>
<button type="submit" class="btn btn-primary btn-sm" name="make" >Make Admin</button>
</div>
</td>
</tr>
</form>
@endforeach
或者,您可以在循环之外放置一个隐藏的电子邮件字段,并在提交前使用 JS 为其分配值。
第 1 步:将数据属性 (data-email
) 添加到您的按钮以接收电子邮件。同时添加一个常用的 class 名称来捕捉点击事件。 (见JS部分)
<button type="button" class="test-btn btn btn-primary btn-sm" name="edit" data-email="{{$user->email}}" >Edit</button>
<button type="button" class="test-btn btn btn-primary btn-sm" name="delete" data-email="{{$user->email}}" >Delete</button>
<button type="button" class="test-btn btn btn-primary btn-sm" name="make" data-email="{{$user->email}}" >Make Admin</button>
第 2 步:将 email
隐藏字段移出循环,值为空。
<form action="{!!url('/delete')!!}" method="post" id="test-form"> {!!csrf_field()!!}
<input type="hidden" value="" name="email" id="email">
第 3 步:添加 JS 以捕获按钮上的点击事件,并将点击按钮的电子邮件的值分配给电子邮件文本字段。
$(".test-btn ").on("click",function(e){
//assign the email value from button to variable
email = $(this).attr(data-email);
//assign the email value to email hidden field
$("#email").value(email);
//submit the form
$("#test-form").submit();
});
假设您希望在单击编辑按钮时转到包含用户详细信息的编辑页面。
<a href="{{ route('your_route_name',$user->id) }}" class="test-btn btn btn-primary btn-sm">Edit</a>