我在LoginController中登录时设置会话数据,如下所示:
class LoginController extends Controller{
protected function authenticated($request, $user){
$record = ['name'=>'bob'];
session(['profile' => $record]);
}
}
该会话可在任何刀片中使用:
$profile = session('profile');
如何在所有刀片服务器上使用变量$profile
?
我尝试使用事件监听器和View::share( 'profile', session('profile'))
,但是在我使用的事件中似乎无法访问会话数据。
答案 0 :(得分:3)
您正在寻找的是视图作曲家:
https://laravel.com/docs/5.8/views#view-composers
如果会话数据在服务提供商的启动过程中不可用(不是),则应使用中间件并以这种方式进行定义:
https://laravel.com/docs/5.8/middleware#registering-middleware
// App\Http\Middleware\MyMiddleware.php
class MyMiddleware
{
public function handle($request, Closure $next, $guard = null)
{
$profile = session('profile');
View::share('profile', $profile);
// Important: return using this closure,
// since this is all part of a chain of middleware executions.
return $next($request);
}
}
接下来,请确保您的中间件已加载到App\Http\Kernel.php
中(例如,在全局中间件堆栈protected $middleware = [...]
上。)
答案 1 :(得分:0)
正确的方法是在句子{{session()-> get('profile')}}中使用此句子session()-> get('profile')。