我想用laravel這樣設置會話變量
Session::set('variableName')=$value;
但問題來設置會話變量的是,我不知道在哪裏把這個代碼,因爲我想設置一次(當訪客訪問主頁或任何其他頁面)? 主要想法是使用全局變量在所有應用程序控制器中使用它,我聽說了與配置變量相關的事情,但我不確定使用配置變量還是僅使用會話是一個好主意? 感謝
我想用laravel這樣設置會話變量
Session::set('variableName')=$value;
但問題來設置會話變量的是,我不知道在哪裏把這個代碼,因爲我想設置一次(當訪客訪問主頁或任何其他頁面)? 主要想法是使用全局變量在所有應用程序控制器中使用它,我聽說了與配置變量相關的事情,但我不確定使用配置變量還是僅使用會話是一個好主意? 感謝
這樣做的正確的語法是...
Session::set('variableName', $value);
爲了得到變量,你使用...
Session::get('variableName');
如果您需要設置一次,我'找出你想要什麼時候設置並使用事件來做到這一點。例如,如果你想,當有人登錄時設置它,你會使用...
Event::listen('auth.login', function()
{
Session::set('variableName', $value);
});
請告訴我我們可以使用此事件的地方? – Uzair 2017-04-11 08:18:34
在路由或控制器? – Uzair 2017-04-11 08:18:51
你可能想爲它創建一個服務提供者並把它放在那裏。 – user3158900 2017-04-11 17:20:23
我認爲你的問題最終都可以歸結到這一點:
我在哪裏可以設置一個可以在我的應用程序中全局訪問的長期價值?
顯而易見的答案是,它取決於。它取決於以下幾個因素:
配置
如果該值是對每個人都是相同的,很少會發生變化,對可能提出它是在配置最好的地方文件在app/config
之下的某處,例如app/config/companyname.php
:
<?php
return [
'somevalue' => 10,
];
你可以在應用程序的任何地方通過Config::get('companyname.somevalue')
會議
訪問此值如果您打算存儲值將是不同爲每個用戶,最合理的地方是Session
。這是你提到的問題,但是你使用的語法不正確。正確的語法爲變量存儲在會話是:
Session::put('somekey', 'somevalue');
正確的語法來檢索回來了更高:
Session::get('somekey');
至於當執行這些操作,這是一個小由你決定。我可能會選擇使用Laravel 5. Laravel 4.x的一個route filter如果還是Middleware如果下面是使用路由過濾器,它利用另一個類實際拿出價值的例子:
// 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'))
;
});
upvote因爲hhtg :-)以及好的和全面的答案。 – Tschallacka 2015-07-23 09:31:10
使用這種方法:
Session::put('variableName', $value);
這是非法的PHP。賦值操作的左邊不能是表達式。 'set()'是一個函數/方法調用 - 它只能返回一個值,你不能給它賦值。 – 2015-02-09 19:38:07
這裏有很好的記錄:http://laravel.com/docs/5.0/session – baao 2015-02-09 19:56:15