【发布时间】:2016-11-16 07:43:50
【问题描述】:
我有这样的表单设置:
<form action="/clients/{{ $client->id }}/create-invoice" method="post">
<div class="form-group">
<label for="due_date" class="sr-only">Due Date</label>
<input type="date" name="due_date" class="form-control" placeholder="Due Date">
</div>
<hr />
<p class="clearfix">
<strong class="pull-left">Invoice Items</strong>
<a id="add_invoice_item" class="pull-right"><span class="fa fa-plus"></span></a>
</p>
<div class="form-group invoice_item">
<div class="row">
<div class="col-ms-6 col-sm-8">
<input type="text" name="item_description[]" class="form-control" placeholder="Description">
</div>
<div class="col-ms-3 col-sm-2">
<input type="number" class="form-control" name="item_quantity[]" placeholder="Quantity">
</div>
<div class="col-ms-3 col-sm-2">
<input type="text" class="form-control" name="item_price[]" placeholder="Price">
</div>
</div>
</div>
<div class="form-group">
<input type="hidden" name="_token" value={{ csrf_token() }}>
<button class="btn-primary btn btn-block">Create Invoice</button>
</div>
</form>
我正在使用 Laravel 5.2。
我有以下 jQuery 允许用户添加更多发票项目:
$("#add_invoice_item").click(function(){
$(".invoice_item").first().clone().insertAfter("div.invoice_item:last").find("input[type='text']").val("");
});
问题是当我查看请求时:
public function store(Request $request, Client $client)
{
return $request->all();
}
它返回这个:
{
"due_date": "2016-11-19",
"item_description": [
"Website Development",
"SEO",
"Server Setup"
],
"item_quantity": [
"1",
"1",
"1"
],
"item_price": [
"450.00",
"300.00",
"100.00"
],
"_token": "7tUMdXX9FBU4a7cug51oBlrRyeBi9H8ucUNltQgM"
}
虽然这是预期的结果,但我不确定如何让它以易于使用的方式返回。
例如,我需要一个数组列表,而不是 3 个不同的数组列表,我需要一个数组列表,其中每个对象具有该行对象的每个字段。
所以:
它会返回这个:
{
"due_date": "2016-11-19",
"items": [
{"description": "Server Setup", "price": "100.00", "quantity": "1"},
{"description": "SEO", "price": "300.00", "quantity": "1"},
{"description": "Website Development", "price": "450.00", "quantity": "1"}
],
"_token": "7tUMdXX9FBU4a7cug51oBlrRyeBi9H8ucUNltQgM"
}
我假设我需要更改 HTML 和 jQuery,但我不确定如何使其正常工作,以便 jQuery 将新字段正确添加到 items 的数组中
谢谢!
【问题讨论】:
-
我建议您保留请求数据的原样。因为循环遍历任一数组并使用当前迭代的索引来匹配所有数组中的项目比在提交之前破解表单的内容要简单得多。
-
in html 用唯一的 id 对复选框进行分组,无论是数据库中的 id 还是您仅在 html 页面上使用的 id,例如:
<input type="checkbox" name="item_price[0]"> <input type="checkbox" name="item_description[0]"> etc
标签: javascript php jquery arrays laravel