我有一个张贴到Controller的刀片表单,然后控制器会在执行某些操作后重定向到相同的URL。
在重定向到用户之前,将传递两个变量。我的问题是,在使用Redirect::to()
时,只有->with('item_list',$item_list)
可用于视图,而->with('added_items',$added_items)
在视图中使用$added_items
变量时会出现错误:
ErrorException
未定义的变量:added_items(查看:/ var / www / mw / app / views / delivery-> 请求/ create.blade.php)
控制器
if (Input::has('addItem'))
{
if (Session::has('added-items'))
{
$id = Input::get('item_id');
$new_item = Item::find($id);
Session::push('added-items', [
'item_id' => $id,
'item_name' => $new_item->item_name,
'item_quantity' => Input::get('item_quantity')
]);
$array = Session::get('added-items');
//move outside foreach loop because we don't want to reset it
$total = array();
foreach ($array as $key => $value)
{
$id = $value['item_id'];
$quantity = $value['item_quantity'];
if (!isset($total[$id]))
{
$total[$id] = 0;
}
$total[$id] += $quantity;
}
$items = array();
foreach($total as $item_id => $item_quantity)
{
$new_item = Item::find($item_id);
$items[] = array(
'item_id' => $item_id,
'item_name' => $new_item->item_name,
'item_quantity' => $item_quantity
);
}
Session::put('added-items', $items);
}
else
{
$id = Input::get('item_id');
$new_item = Item::find($id);
Session::put('added-items', [
0 => [
'item_id' => $id,
'item_name' => $new_item->item_name,
'item_quantity' => Input::get('item_quantity')
]
]);
}
// pass the items again to the page
$item_list = Item::lists('item_name', 'id');
$added_items = Session::get('added-items');
return View::make('delivery-requests/create')
->with('added_items',$added_items)
->with('item_list', $item_list);
}
我使用Redirect::to()
的原因是它维护了相同的URL / delivery-requests / create
但是当我使用View::make()
时,我可以正常访问$added_items
变量,但现在URL变为/ delivery-requests,即使我明确地这样说:
return View::make('delivery-requests/create')
->with('added_items',$added_items)
->with('item_list', $item_list);
我的问题是为什么不能重定向:: to()读取视图上的$ added_items变量
答案 0 :(得分:1)
不是重定向到路由,而是使用您需要的任何其他变量返回该路径末尾的方法。
return $this->create()->with('added_items', $added_items)->with('item_list', $item_list)
其中create()
是路线delivery-requests/create
上使用的方法。
重定向可能就是你之后的实际情况,
Redirect::to()->with('item_list', $item_list);