【发布时间】:2017-09-03 00:56:00
【问题描述】:
这是一个困扰我一段时间的问题。
每次呈现侧边栏时,我都有一个服务提供商将数据传递给所有视图。像这样:
`
public function boot()
{
$userrole = array (DB::table('users')->where('id','=', Auth::id())->value('role'));
$menucase1 = [3,4,9,10];
$menucase2 = [1,2,3,10];
$menucase3 = [1,3,4,9,10];
$menucase4 = [4,9];
$commondata = compact('userrole','menucase1','menucase2','menucase3','menucase4');
view()->share('commondata', $commondata);
View::composer('sidebar', function ($view) {
$userrole = array (DB::table('users')->where('id','=', Auth::id())->value('role'));
$menucase1 = [3,4,9,10];
$menucase2 = [1,2,3,10];
$menucase3 = [1,3,4,9,10];
$menucase4 = [4,9];
$commondata = compact('userrole','menucase1','menucase2','menucase3','menucase4');
$view->with('commondata', $commondata);
});
}`
{{ dd($commondata) }} 为 menucase 数组返回正确的值,但NULL 为$userrole
如果我在控制器中声明相同的$userrole 变量并在视图中调用该变量,则接收到的数据是正确的。
为什么会这样?
提前致谢
【问题讨论】:
-
这是因为会话在控制器创建后开始。
-
所以,只需检查 Auth::id - 它将为空。
-
谢谢,我刚刚打印了用户ID,就像
{{ Auth::id() }},它返回了一个值。 -
@KollleY - 我如何检查我的会话是否在控制器启动后开始......我是新手
-
dd(Auth::id());