我正在努力将变量从一个控制器方法传递给laravel中的另一个方法。
用户创建产品时,我现在想让他获得结果。
问题在于,执行Create方法后,应先将一条消息传递给另一个控制器,然后再进入视图。
我试图将成功或失败消息从postCreate方法传递到getList方法。
创建方法:
public function postCreate() {
if(validation passes){
//create product
return Redirect::to('admin/products/list/'.$current_section_id)
->with('message', 'New Product Created');
}
else{
return Redirect::to('admin/products/new)
->with('message', 'Something went wrong');
}
}
getList方法将用户返回到他之前所在的页面(current_section_id)并列出产品
public function getList($id){
$message = Input::get('message');
return View::make('products.list')
->with('current_section_id', $id)
->with('message', $message);
}
我试图用来->with('message', $message);
传递消息,但是它不能像在视图中使用表单一样工作。
正确的做法是什么?
在视图上使用with()会将数据添加到同一http请求中传递给该视图的数据中。但是,您正在执行重定向,因此创建了一个新请求,因此with()的操作有所不同。
要在http请求之间传递数据,您需要将其附加到url(可能不是一个好主意)或将其存储在会话中(好得多),Laravel的会话处理非常整洁地支持该功能,方法是允许您刷新数据,将其仅在下一个http请求中放置在会话中(重定向上的with()对您有效),然后将其清除。
您可以在Laravel文档中了解有关它的更多信息。但是,这意味着您应该在会话数组中查找数据,而不是期望将其自动注入视图中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句