再次学习。
我只是想知道在控制器之间传递变量的最佳方法是什么?
在codeingniter中,我们曾经通过form open命令传回隐藏变量,这在Laravel 4中是否可行?
最好只使用会话吗?
答案 0 :(得分:9)
控制器应仅接收请求,将其传递到数据存储库(或模型),获取结果并通过查看<将其传递给用户/ strong>或一组视图,或者最多将用户重定向到将一些数据传递给它的新路由。
这就是MVC的工作方式。
所以,你不应该让一个控制器与另一个控制器通话,在它们之间传递值,因为唯一能够触发控制器的东西就是命中一个路由,每次请求只会发生一次。
这样你就不会在同一个请求中创建和运行两个控制器。
但是如果你需要让你的数据持续多个请求,你有一些选择:
请求/重定向/输入
Input::flash();
或
return Redirect::action('YourNewController@action')->withInput();
进入下一个请求
<强>会话强>
Session::put('key', 'value');
进入下一个请求
Session::get('key', 'defaultValue');
<强>缓存强>
$response = Response::make('Hello World');
return $response->withCookie(Cookie::make('name', 'value', $minutes));
并在下一个请求中获取
$value = Cookie::get('name');
<强>数据库强>
只需将数据保存到数据库并在下一个请求中检索。