web-dev-qa-db-ja.com

laravelでセッション変数を設定

laravelこの方法でセッションで変数を設定したい

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

問題は、このコードをどこに置くかわからないことです。「一度だけ設定したいので(ゲストがホームページや他のページにアクセスしたとき)?主なアイデアは、グローバル変数を使用してすべてのアプリケーションコントローラーで使用することです。構成変数に関連する何かについて聞いたことがありますが、構成変数またはセッションのみを使用するのが良いアイデアかどうかわかりませんか?ありがとう

16
user3429578

これの正しい構文は...

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

変数を取得するには、次を使用します...

Session::get('variableName');

一度設定する必要がある場合は、正確に設定するタイミングを把握し、イベントを使用して設定します。たとえば、誰かがログインしたときに設定したい場合は、次を使用します...

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

あなたの質問は最終的にこれに要約できると思います:

アプリケーション内でグローバルにアクセス可能な、長期間有効な値をどこで設定できますか?

明らかな答えは、それが依存するということです。依存する要因はいくつかあります:

  • 値はこれまでとは異なるでしょうか、それともすべての人にとって同じになるでしょうか?
  • 寿命は正確にどのくらいですか? (永遠に?一日?1つのブラウジング「セッション」?)

Config

値がすべての人で同じで、めったに変更されない場合、おそらく配置するのに最適な場所は、_app/config_の下のどこかにある構成ファイルです。 _app/config/companyname.php_:

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

Config::get('companyname.somevalue')を介してアプリケーションのどこからでもこの値にアクセスできます

セッション

格納しようとしている値が各ユーザーに対してdifferentになる場合、それを配置する最も論理的な場所はSessionです。これはあなたの質問で暗示するものですが、間違った構文を使用しています。 Sessionに変数を保存する正しい構文は次のとおりです。

_Session::put('somekey', 'somevalue');
_

後で取り出すための正しい構文は次のとおりです。

_Session::get('somekey');
_

whenがこれらの操作を実行する限り、それはあなた次第です。 on Laravel 4.xまたは Middleware を使用する場合は、おそらく route filter を選択します。 Laravel 5.以下は、別のクラスを活用して実際に値を算出するルートフィルターの使用例です。

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

Laravel 5.6では、次のように設定する必要があります。

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

取得するのは簡単です

$variableName = session('variableName')
6
levis

in Laravel 5.4

この方法を使用します。

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

たとえば、セッションにデータを保存するには、通常putmethodまたはsessionヘルパーを使用します。

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

または

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

セッションからアイテムを取得するには、getを使用できます。

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

またはグローバルsessionヘルパー:

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

セッションにアイテムが存在するかどうかを判断するには、hasメソッドを使用できます。

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

あなたが試すことができます

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

上記の回答に追加するには、次のように関数を定義してください。

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

「(Request $ request)」に注意し、次のようにセッションを設定します。

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

そして、この方法でセッションを取得します。

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

セッションを消去するには、これを試してください:

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

または

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