【发布时间】:2014-07-22 10:31:37
【问题描述】:
我有一个发布到控制器的刀片表单,然后控制器将在执行一些操作后重定向到相同的 URL。
在重定向到用户之前,将传递两个变量。我的问题是,当使用Redirect::to() 时,只有->with('item_list',$item_list) 可用于视图,而->with('added_items',$added_items) 在视图中使用$added_items 变量时会出现错误:
错误异常
未定义变量:add_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);
我的问题是为什么 Redirect::to() 不能读取视图上的 $ added_items 变量
【问题讨论】:
-
你能告诉我们控制器的方法代码吗?
-
Redirect::to()返回RedirectResponse。该类中的with()方法将您提供给会话的数据闪烁,因此您可以尝试改用Session::get('added_items')。 -
@fmgonzalez 我已经用控制器的方法代码更新了我的问题