我的表单会创建一个交付请求。基本上在该表单上,用户需要添加/删除项目及其数量。
这就是我构建表格的方式:项
ID
ITEM_NAME
投放请求
ID
delivery_request_number
requested_by
投放-request_item
ID
delivery_request_id
ITEM_ID
item_quantity
例如,假设用户创建了一个递送请求。 并增加3台X-printer,2台Y-ink。
由于在'添加项'按钮上提交,因此会重新加载或重定向用户的浏览器。如何添加/删除所述项目,然后在保存时我会假设有类似的内容:
项
id = 1
item_name = X-printer
id = 2
item_name = Y-ink
投放请求
id = 001
delivery_request_number = 0001
requested_by = John Doe
投放-request_item
id = 1
delivery_request_id = 0001
item_id = 1
item_quantity = 3
id = 2
delivery_request_id = 0001
item_id = 2
item_quantity = 2
我对如何执行它一无所知。
//create.blade.php
{{Form::open(array('method'=>'POST','route'=>'delivery-requests.store'))}}
{{Form::text('Requested by', Auth::user()->email, array('disabled'=>'true'))}}
<div>
{{Form::label('Shows Items from table')}}
{{Form::select('items', $items)}}
{{Form::label('Quantity')}}
{{Form::text('item_quantity')}}
{{Form::submit('add item',array('name'=>'addItem'))}}
</div>
<div>
<table>
<theader>
<tr>
<td>ITEM NAME</td>
<td>QUANTITY</td>
<td></td>
</tr>
</theader>
<tbody>
<!-- loop through the items -->
<td> {{-- Item name --}}</td>
<td> {{-- Quantity--}}</td>
<td> {{Form::submit('remove item', array('name' => 'removeItem'))}} </td>
</tbody>
</table>
</div>
{{Form::submit('submit', array('name' => 'submit'))}}
{{Form::close()}}
现在我还没有完成 DeliveryRequestsController 的代码,因为我不确定如何继续。
// DeliveryRequestsController
public function store()
{
if(Input::has('addItem'))
{
// see if itme is already added,
// add the item and quantity
return Redirect::to('delivery-requests/create');
}
elseif(Input::has('removeItem'))
{
// remove the item and quantity
return Redirect::to('delivery-requests/create');
}
elseif(Input::has('submit'))
{
$input = Input::all();
$delivery_request = new DeliveryRequest;
$delivery_request-> = Input::get('requested_by');
$delivery_request->save()
// get all items and quantities, save it
return Redirect::to('delivery-requests');
}
else
{
return 'something went wrong';
}
return Redirect::route('delivery-requests.index');
}
修改
从下面的屏幕截图中可以看出,我仍然需要重定向到同一页面,并显示添加的项目。
答案 0 :(得分:0)
你很亲密。你确实有一些语法错误,但这应该适用于你,假设你使用与项目的id匹配的值填充你的选择..
$delivery_request = new DeliveryRequest();
$delivery_request->requested_by = Input::get('requested_by');
$delivery_request->save();
$delivery_request->items()->attach(Input::get('items'), array('quantity' => Input::get('item_quantity')));
如果我可以提出一个建议,我会将DeliveryRequest
重命名为Cart
,因为它在逻辑上更有意义。然后,您可以拥有Delivery
,这可以由许多Cart
个项目组成。