我有三个表delivery-request_item,items和一个数据透视表delivery-request_item。在我的create.blade.php中,我有一个按钮,它将添加其中一个项目及其相应的数量。
我的解决方案是将项目和数量放入会话。现在我的问题是我只能创建一个记录,如果我决定添加另一个项目,则前一个项目会被覆盖。
create.blade.php
{{Form::open(array('method'=>'POST','url'=>'delivery-requests'))}}
{{Form::text('requested_by', Auth::user()->email)}}
<div>
{{Form::label('Shows Items from table')}}
{{Form::select('item_id', $items)}}
{{Form::label('Quantity')}}
{{Form::text('item_quantity')}}
{{Form::submit('add item',array('name'=>'addItem'))}}
{{Form::submit('remove item', array('name' => 'removeItem'))}}
</div>
<hr>
<div>
<table>
<theader>
<tr>
<td>ITEM NAME</td>
<td>QUANTITY</td>
</tr>
</theader>
<!-- loop through all added items and display here -->
@if(Session::has('item_id'))
<h1>{{ Session::get('item_id') }}</h1>
@endif
@if(Session::has('item_quantity'))
<h1>{{ Session::get('item_quantity')}}</h1>
@endif
</table>
</div>
{{Form::submit('submit', array('name' => 'submit'))}}
{{Form::close()}}
DeliveryRequestsController @商店
if(Input::has('addItem'))
{
Session::flash('item_id', Input::get('item_id'));
Session::flash('item_quantity', Input::get('item_quantity'));
$data = Session::all();
$item = Item::lists('item_name','id');
return View::make('test')->with('data',$data)->with('items',$item);
}
答案 0 :(得分:0)
两件事。
您需要将会话设为数组,否则您将始终覆盖。
您不需要使用flash()
,因为一旦发出另一个请求,该数据将被删除,闪存数据是什么,数据会持续到下一个请求。
试试这个:
if(Input::has('addItem')) {
if(Session::has('items')) {
Session::push('items', [
'id' => Input::get('item_id'),
'qty' => Input::get('item_quantity')
]);
} else {
Session::put('items', [
'id' => Input::get('item_id'),
'qty' => Input::get('item_quantity')
]);
}
}
Session::push()
适用于存储在会话中的数组,如果它不存在,则显然会使用Session::put()
。
请记住,这些数据会一直存在,并且需要在某些情况下清除,例如一旦您完成它就会被清除。
有关会话的更多信息,请阅读:http://laravel.com/docs/session