Saltar al contenido

Establecer variable de sesión en laravel

Solución:

La sintaxis correcta para esto es …

Session::set('variableName', $value);

Para Laravel 5.4 y posterior, el método correcto a utilizar es put.

Session::put('variableName', $value);

Para obtener la variable, usaría …

Session::get('variableName');

Si necesita configurarlo una vez, averiguaré exactamente cuándo desea configurarlo y usaré Eventos para hacerlo. Por ejemplo, si desea configurarlo cuando alguien inicie sesión, usaría …

Event::listen('auth.login', function()
{
    Session::set('variableName', $value);
});

Creo que su pregunta, en última instancia, se puede reducir a esto:

¿Dónde puedo establecer un valor duradero que sea accesible globalmente en mi aplicación?

La respuesta obvia es que depende. De lo que depende son un par de factores:

  • ¿El valor alguna vez será diferente o será el mismo para todos?
  • ¿Cuánto dura exactamente? (¿Para siempre? ¿Un día? ¿Una ‘sesión’ de navegación?)

Config

Si el valor es el mismo para todos y rara vez cambiará, el mejor lugar para colocarlo probablemente sea en un archivo de configuración en algún lugar debajo app/config, p.ej app/config/companyname.php:

<?php
return [
    'somevalue' => 10,
];

Puede acceder a este valor desde cualquier lugar de su aplicación a través de Config::get('companyname.somevalue')

Sesión

Si el valor que tiene la intención de almacenar va a ser diferente para cada usuario, el lugar más lógico para colocarlo es en Session. Esto es a lo que alude en su pregunta, pero está utilizando una sintaxis incorrecta. La sintaxis correcta para almacenar una variable en Session es:

Session::put('somekey', 'somevalue');

La sintaxis correcta para recuperarlo más tarde es:

Session::get('somekey');

Hasta cuando para realizar estas operaciones, eso depende un poco de usted. Probablemente elegiría un filtro de ruta si estuviera en Laravel 4.xo Middleware si usara Laravel 5. A continuación se muestra un ejemplo del uso de un filtro de ruta que aprovecha otra clase para obtener el valor:

// File: ValueMaker.php (saved in some folder that can be autoloaded)
class ValueMaker
{
    public function makeValue()
    {
        return 42;
    }
}

// File: app/filters.php is probably the best place
Route::filter('set_value', function() {
    $valueMaker = app()->make('ValueMaker');
    Session::put('somevalue', $valueMaker->makeValue());
});

// File: app/routes.php
Route::group(['before' => 'set_value'], function() {
   // Value has already been 'made' by this point. 
   return View::make('view')
       ->with('value', Session::get('somevalue'))
   ;
});

En Laravel 5.6, deberá configurarlo como

  session(['variableName'=>$value]);

Recuperarlo es tan simple como

$variableName = session('variableName')
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *