it-swarm.com.de

Sitzungsvariable in Laravel einstellen

Ich möchte eine Variable in der Sitzung mit Laravel auf diese Weise setzen

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

aber das Problem ist, dass ich nicht weiß, wo ich diesen Code platzieren soll, weil ich ihn einmal einstellen möchte (wenn der Gast die Homepage oder eine andere Seite besucht)? Die Hauptidee ist zu verwenden Eine globale Variable, die in allen Anwendungscontrollern verwendet werden kann. Ich hörte etwas über Konfigurationsvariablen, aber ich bin mir nicht sicher, ob es eine gute Idee ist, Konfigurationsvariablen oder nur die Sitzung zu verwenden. Danke

15
user3429578

Die richtige Syntax dafür ist ...

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

Um die Variable zu erhalten, würden Sie ...

Session::get('variableName');

Wenn Sie es einmal festlegen müssen, würde ich herausfinden, wann genau Sie es festlegen möchten, und Ereignisse dazu verwenden. Wenn Sie beispielsweise festlegen möchten, dass sich jemand anmeldet, würden Sie ...

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

Ich denke, deine Frage lässt sich letztlich darauf reduzieren:

Wo kann ich einen langlebigen Wert festlegen, der in meiner Anwendung global verfügbar ist?

Die offensichtliche Antwort ist, dass es darauf ankommt. Worauf es ankommt, sind einige Faktoren:

  • Wird der Wert jemals anders sein oder wird er für alle gleich sein?
  • Wie lange ist genau das langlebig? (Für immer? Ein Tag? Eine Browsersitzung?)

Config

Wenn der Wert für alle gleich ist und sich selten ändert, befindet sich der beste Ort, um ihn wahrscheinlich in einer Konfigurationsdatei irgendwo unter app/config zu platzieren, z. app/config/companyname.php:

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

Sie können auf diesen Wert von überall in Ihrer Anwendung über Config::get('companyname.somevalue') zugreifen.

Sitzung

Wenn der Wert, den Sie speichern möchten, abweichend für jeden Benutzer lautet, ist der logischste Ort, an dem er gespeichert werden soll, Session. Dies ist, worauf Sie in Ihrer Frage hinweisen, aber Sie verwenden eine falsche Syntax. Die korrekte Syntax zum Speichern einer Variablen in Session lautet:

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

Die korrekte Syntax zum späteren Abrufen lautet:

Session::get('somekey');

Soweit wann diese Operationen ausführt, liegt es an Ihnen. Ich würde wahrscheinlich einen Routenfilter wählen wenn auf Laravel 4.x oder Middleware wenn Sie Laravel 5 verwenden. Nachfolgend ein Beispiel für die Verwendung eines Routenfilters, der eine andere Klasse verwendet, um tatsächlich den Wert zu erhalten:

// 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'))
   ;
});
14
Jeff Lambert

in Laravel 5.4

verwenden Sie diese Methode:

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

In Laravel 5.6 müssen Sie es als einstellen

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

Abrufen ist so einfach wie 

$variableName = session('variableName')
3
levis

Du kannst es versuchen 

 Session::put('variable_Name', "Your Data Save Successfully !");  
 Session::get('variable_Name');
1
Hamza Khan

Um beispielsweise Daten in der Sitzung zu speichern, verwenden Sie normalerweise die put-Methode oder den session-Helper:

// Via a request instance...
$request->session()->put('key', 'value');

oder

// Via the global helper...
session(['key' => 'value']);

um ein Element aus der Sitzung abzurufen, können Sie get verwenden:

$value = $request->session()->get('key', 'default value');

oder globaler session Helfer: 

$value = session('key', 'default value');

Um festzustellen, ob ein Element in der Sitzung vorhanden ist, können Sie die has-Methode verwenden:

if ($request->session()->has('users')) {
//
}
1

Um zu den obigen Antworten hinzuzufügen, stellen Sie sicher, dass Sie Ihre Funktion folgendermaßen definieren:

public function functionName(Request $request)  {
       //
}

Beachten Sie das "(Request $ request)", setzen Sie jetzt eine Sitzung wie folgt:

$request->session()->put('key', 'value');

Und rufen Sie die Sitzung auf folgende Weise ab:

$data = $request->session()->get('key');

So löschen Sie die Sitzung:

$request->session()->forget('key');  

oder

$request->session()->flush();
0
Multty