Te traemos el resultado a esta duda, al menos eso pensamos. Si presentas preguntas compártelo en un comentario, que sin tardanza
Solución:
Actualización al 18 de julio de 2019
(Esta respuesta estaba recibiendo mucha atención de la comunidad de Laravel, así que pensé en actualizarla).
Laravel ha dejado oficialmente de admitir sesiones y vistas en laravel/lumen
marco de la versión 5.2 y en adelante.
Pero laravel
todavía tiene un componente illuminate/session
que se puede instalar en lumen/framework
y podemos jugar con esto.
Paso 1
Instalar en pc illuminate/session
usando
composer require illuminate/session
Paso 2
Ahora ve a bootstrap/app.php
y agregue este middleware
$app->middleware([
IlluminateSessionMiddlewareStartSession::class,
]);
El propósito de agregar el middleware anterior es iniciar la sesión en cada solicitud y guardar la sesión antes de entregar la respuesta.
Paso 3
Ahora agrega config/session.php
ya que no está presente en Lumen
por defecto. Puedes tomar session.php
del repositorio oficial de Laravel.
Paso 4
Cree el directorio de almacenamiento de la sesión del marco por
mkdir -p storage/framework/sessions
Gracias a DayDream
Paso – 5
En bootstrap/app.php
añadir enlaces para IlluminateSessionSessionManager
$app->singleton(IlluminateSessionSessionManager::class, function () use ($app)
return $app->loadComponent('session', IlluminateSessionSessionServiceProvider::class, 'session');
);
$app->singleton('session.store', function () use ($app)
return $app->loadComponent('session', IlluminateSessionSessionServiceProvider::class, 'session.store');
);
Gracias a @xxRockOnxx por encontrar loadComponent
método. Se necesitan 3 argumentos,
- el primero es
config
Nombre del archivo. (el archivo debe estar presente enconfig/
directorio) - el segundo es ServiceProvider FQN
- tercero es el retorno de este método.
loadComponent
solo llama al $app->register
e inyectar $app
mientras construía el ServiceProvider
Cómo utilizar
// Save Session
$router->get('/', function (IlluminateHttpRequest $request)
$request->session()->put('name', 'Lumen-Session');
return response()->json([
'session.name' => $request->session()->get('name')
]);
);
// Test session
$router->get('/session', function (IlluminateHttpRequest $request)
return response()->json([
'session.name' => $request->session()->get('name'),
]);
);
También agregué un ejemplo sobre github.
https://github.com/rummykhan/lumen-session-example
Es importante que también uses $request->session()
De lo contrario, no funcionará.
Probé la solución mencionada anteriormente, sin embargo, también es necesario crear una carpeta storage/framework/sessions
si utiliza la configuración predeterminada.
Reseñas y valoraciones
Acuérdate de que puedes agregar una reseña si te fue útil.