我在通过
请求登录页面时设置会话变量with->('data', $data);
并使用
Session::reflash();
在登录视图中将此会话变量的生命周期延长到下一个请求。
在登录页面中,我有一个指向另一个页面的链接,只有管理员用户可以看到它,所以我为该页面编写了一个需要会话变量数据的过滤器。
但是当我点击链接发出新请求时,数据变量已经消失了。所以过滤器无法获得它。
当我向其他页面发出新请求时,如何获得相同的会话变量?
答案 0 :(得分:2)
我建议您使用以下内容:
Session::put("data", $data);
在此之前:
with->('data', $data);
在下一个请求中你会这样做:
Session::get("data");
当您的使用完成后,您将其删除:
Session::forgot("data");
但是如果您的数据是固定的,并且应该在多个地方重复使用,最好通过模型为它提供服务(可能通过方法返回一些值)。
class MyModel extends Eloquent
{
function SomeData ()
{
return array("something" => "sometingElse");
}
}
在您的控制器中,您可以:
MyModel::SomeData();
但是,您也可以从数据库中获取数据。但是,如果您的数据实际上不是数据库驱动的,例如它们是页面的一些标题,您也可以通过BaseController全局变量传递它:
请注意,您的控制器通常是另一个BaseController的范围:
class Pages extends BaseController
{
}
在BaseController
中,您可以定义一些默认值:
class BaseController extends Controller
{
protected $myValues;
function getDefaultValues()
{
$this->myValues = array("something"=>"somethingElse");
return $this->myValues; // however this is an example, you may not need any method
// and the property itself might be enough.
}
}