你好,我想知道是否有可能有一个数组在查看刀片,是由用户选择的值填充,然后传递到控制器.我问是否有可能这样做的事情,并避免这种类型的代码,我已经有这样的作品:
foreach ($request->products as $index => $product) {
$values[] = [
'order_id' => $order->id,
'product_id' => $product,
'amount' => $request->amount[$index],
];
所以对于foreach,我不需要写$index => $product
这是来自视图的请求:
$request->validate([
'order_number' => 'required',
'client_id' => 'required|exists:clients,id',
'description' => 'required',
'products' => 'required|exists:products,id',
'amount' => 'required',
]);
这是我使用的视图:
<div class="row mb-3">
<label for="products" class="col-md-4 col-form-label text-md-end">{{ __('Product') }}</label>
<div class="col-md-6">
<select name="products[]" id="products" type="text" class="form-control @error('products') is-invalid @enderror" required autocomplete="products">
@foreach($products as $product)
<option value="{{$product->id}}">{{$product->name}}</option>
@endforeach
</select>
@error('products')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-3">
<label for="amount" class="col-md-4 col-form-label text-md-end">{{ __('Amount') }}</label>
<div class="col-md-6">
<input id="amount" type="text" class="form-control @error('amount') is-invalid @enderror" name="amount[]" required autocomplete="amount">
@error('amount')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
2条答案
按热度按时间4bbkushb1#
如果我没理解错的话,你想避免使用JQuery吗?这取决于你使用的环境和语言。在ASP.NET内核中,你可以使用一个隐藏的输入字段,并以文本的形式传递一些内容。
然后在你的控制器中你可以反序列化它(C#示例)。
也许这就是你想要的,但这真的取决于你在做什么,我不确定。
zujrkrfu2#
我们可以使用输入名称创建一个关联数组,并将
product id
用作数组中的键。您可以通过为数组索引添加产品ID并标记将进入该数组索引的字段来实现这一点。
这将产生一个结构
虽然您仍然必须使用
foreach($request->products as $productID => $data)
进行迭代,但是数据结构在数据存储位置方面完全是关系型的。