如何解决提交的表单在 Laravel 中检测到空对象请求
创建订单时,我需要重定向到新页面以输入订购材料的信息并存储数据透视表(订单,材料),但是当我在第二页提交表单时,请求元素检测为空,我可以不恢复我的输入值来存储它,我不明白为什么它不起作用
表单代码:
<form class="form-material" action="{{ route('commandeMateriaus.store') }}" method="POST">
@csrf
<div style="margin-bottom: 20px; color:black;">
<div style="padding-right: 50px;">
<div >
<span style="margin-right: 50px;"> <span style="font-weight: bold;"> Code de la commande : </span><input type="text" name="code_commande" value="{{ $commande->code_commande }}" style="border:none;" readonly> </span>
</div>
<span style="margin-right: 50px;"> <span style="font-weight: bold;"> Date de la commande : </span> {{ $commande->date_commande }} </span>
<span style="margin-right: 50px;"> <span style="font-weight: bold;"> Fournisseur : </span> {{ $fournisseur->intitule_fournisseur }}</span>
</div>
</div>
<div style="margin-bottom: 20px;">
<div class="row">
<div class="col-6">
<div class="form-group form-primary form-static-label">
<label class="form-label " style="top: -14px; color: black;">Matériaux <span class="text-danger">*</span> </label>
<div class="select">
<select id="mySelect" class="materiaux form-control" name="materiaus[]" multiple size="5">
@foreach($materiaus as $materiau)
<option value="{{ $materiau->id }}"> {{ $materiau->intitule_materiau }} </option>
@endforeach
</select>
</div>
<span class="form-bar"></span>
</div>
</div>
</div>
</div>
<div>
<h5>Liste des matériaux commandés :</h5>
<table class="table m-b-0 text-center">
<thead>
<td>Matériau</td>
<td>Prix Unitaire</td>
<td>Quantité</td>
<td>Montant</td>
</thead>
<tbody >
@foreach($materiaus as $materiau)
<tr style="display:none;" id="{{ $materiau->id }}" class="data">
<td > {{ $materiau->intitule_materiau }} </td>
<td> <input type="text" id="prix{{ $materiau->id }}" name="prix_unit_materiau" value="{{ $materiau->prix_unit_materiau }}" style="border:none;" readonly> </td>
<td > <input type="number" class="quantite" id="q{{ $materiau->id }}" name="quantite_materiau" style="border:none;" placeholder="Entrer la quantité" onchange="recupValeur(this.value,this.id);"> </td>
<td ><input type="decimal" class="montant" id="montant{{ $materiau->id }}" name="montant_materiau" value="0" style="border:none;" readonly></td>
</tr>
@endforeach
<tr>
<td colspan="4" style="text-align:right;" >Total</td>
<td ><input type="decimal" name="total_commande" value="0" style="border:none;" id="total" readonly></td>
</tr>
</tbody>
</table>
</div>
<div class=" text-right" style="margin-top: 10px;">
<button type="submit" class="btn btn-primary"> <i class="fa fa-fw fa-plus-circle" > </i> Ajouter</button>
<button type="reset" class="btn btn-info" style="margin-left: 10px;"><i class="fa fa-fw fa-sync" ></i> Réinitialiser</button>
</div>
</form>
存储方法
public function store(Request $request)
{
$request->validate([
'code_commande' => 'required','materiaus' => 'required','quantite_materiau' => 'required','montant_materiau' => 'required','total_commande' => 'required'
]);
$cm = new CommandeMateriau();
$commande = Commande::where('code_commande','=',$request->code_commande)->first();
$commande_id = $commande->id;
$commande->total_commande = $request->total_commande;
$commande->save();
$cm->commande_id = $commande_id;
$cm->quantite_materiau = $request->quantite_materiau;
$cm->montant_materiau = $request->montant_materiau;
foreach ($request->materiaus as $materiau){
$cm->materiau_id = $materiau->id;
$cm->save();
}
return redirect()->back()
->with('success','Enregistrement ajouté avec succes.');
}
有人可以帮我吗
解决方法
因为您的输入类型是数组,请尝试在表单标记中添加此 enctype="multipart/form-data"
。
<form class="form-material" action="{{ route('commandeMateriaus.store') }}" method="POST" enctype="multipart/form-data" >
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。