Laravel:在显示的同一页面上编辑数据
Laravel: Edit Data on Same Page it's Displayed on
我想在显示的同一页面上更改用户数据。
基本上,我想 select 验证或拒绝,单击提交按钮,页面随更改刷新。
所以我有这个代码:
<table class="table table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Receipt</th>
<th scope="col">Status</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<form method='POST' action="{{ action('PaymentController@update' , $user->id )}}"
enctype="multipart/form-data">
@csrf
@method('PUT')
<th scope="row">{{$user->id}}</th>
<td>{{$user->name}}</td>
<td>
<a href="/{{$user->receipt}}">{{$user->receipt}}</a>
</td>
@if( $user->payment_status != NULL )
<td>
PAYMENT VERIFIED
</td>
@else
<td>
<div class="form-group">
<select multiple class="form-control-sm" id="exampleFormControlSelect2" name="nsap_reg"
required="">
<option value="verified">Verified</option>
<option value="NULL">Rejected</option>
</select>
</div>
</td>
@endif
<td>
<input type="submit" value="SUBMIT">
</td>
</form>
</tr>
@endforeach
</tbody>
</table>
控制器:
public function update(Request $request, $id)
{
$request->validate([
'nsap_reg' => 'required',
]);
$payment_status = \App\User::find($id);
['nsap_reg' => $request->nsap_reg];
$payment_status->save();
return redirect('user-status');
}
我的问题是点击提交后没有任何反应,页面只是刷新。
任何帮助将不胜感激。
正如我所看到的,您创建了包含多个 select 的 select 列表,当您将数据保存到数据库时,您发送数组数据进行保存。
但是你必须先把它转换成json然后设置保存。
下面是保存multi-select的例子nsap_reg
.
<?php
public function update(Request $request, $id)
{
$request->validate([
'nsap_reg.*' => 'required',
]);
$payment_status = \App\User::find($id);
$payment_status->nsap_reg = json_encode($request->input('nsap_reg'));
$payment_status->save();
return redirect('user-status');
}
但如果您使用的是单个 select,则从 select 列表中删除 multiple
属性,然后使用此代码
<?php
public function update(Request $request, $id)
{
$request->validate([
'nsap_reg' => 'required',
]);
$payment_status = \App\User::find($id);
$payment_status->nsap_reg = $request->input('nsap_reg');
$payment_status->save();
return redirect('user-status');
}
你只需要将nsap_reg
的值设置为用户对象并保存即可。
$payment_status = \App\User::find($id);
$payment_status->nsap_reg = $request->nsap_reg;
$payment_status->save();
我想在显示的同一页面上更改用户数据。 基本上,我想 select 验证或拒绝,单击提交按钮,页面随更改刷新。 所以我有这个代码:
<table class="table table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Receipt</th>
<th scope="col">Status</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<form method='POST' action="{{ action('PaymentController@update' , $user->id )}}"
enctype="multipart/form-data">
@csrf
@method('PUT')
<th scope="row">{{$user->id}}</th>
<td>{{$user->name}}</td>
<td>
<a href="/{{$user->receipt}}">{{$user->receipt}}</a>
</td>
@if( $user->payment_status != NULL )
<td>
PAYMENT VERIFIED
</td>
@else
<td>
<div class="form-group">
<select multiple class="form-control-sm" id="exampleFormControlSelect2" name="nsap_reg"
required="">
<option value="verified">Verified</option>
<option value="NULL">Rejected</option>
</select>
</div>
</td>
@endif
<td>
<input type="submit" value="SUBMIT">
</td>
</form>
</tr>
@endforeach
</tbody>
</table>
控制器:
public function update(Request $request, $id)
{
$request->validate([
'nsap_reg' => 'required',
]);
$payment_status = \App\User::find($id);
['nsap_reg' => $request->nsap_reg];
$payment_status->save();
return redirect('user-status');
}
我的问题是点击提交后没有任何反应,页面只是刷新。 任何帮助将不胜感激。
正如我所看到的,您创建了包含多个 select 的 select 列表,当您将数据保存到数据库时,您发送数组数据进行保存。 但是你必须先把它转换成json然后设置保存。
下面是保存multi-select的例子nsap_reg
.
<?php
public function update(Request $request, $id)
{
$request->validate([
'nsap_reg.*' => 'required',
]);
$payment_status = \App\User::find($id);
$payment_status->nsap_reg = json_encode($request->input('nsap_reg'));
$payment_status->save();
return redirect('user-status');
}
但如果您使用的是单个 select,则从 select 列表中删除 multiple
属性,然后使用此代码
<?php
public function update(Request $request, $id)
{
$request->validate([
'nsap_reg' => 'required',
]);
$payment_status = \App\User::find($id);
$payment_status->nsap_reg = $request->input('nsap_reg');
$payment_status->save();
return redirect('user-status');
}
你只需要将nsap_reg
的值设置为用户对象并保存即可。
$payment_status = \App\User::find($id);
$payment_status->nsap_reg = $request->nsap_reg;
$payment_status->save();