[英]How to keep data between various pages/controllers in Laravel
我在通過以下方式請求登錄頁面時設置了會話變量
with->('data', $data);
和使用
Session::reflash();
在登錄視圖中,以將該會話變量的壽命延長到下一個請求。
在登錄頁面中,我有一個指向另一個頁面的鏈接,只有管理員用戶才能看到它,因此我為需要會話變量數據的頁面編寫了一個過濾器。
但是,當我單擊鏈接提出新請求時,數據變量已經消失了。 因此過濾器無法獲取它。
當我向其他頁面提出新請求時,如何獲得相同的會話變量?
我為您推薦以下內容:
Session::put("data", $data);
在此行之前:
with->('data', $data);
然后在下一個請求中執行:
Session::get("data");
使用完畢后,將其刪除:
Session::forgot("data");
但是,如果您的數據是固定的,並且應該在多個地方重用,則最好通過Models(也許通過方法返回一些值)為其提供服務。
class MyModel extends Eloquent
{
function SomeData ()
{
return array("something" => "sometingElse");
}
}
然后在您的控制器中執行以下操作:
MyModel::SomeData();
但是,您也可以從數據庫中獲取數據。 但是,如果您的數據不是真正由數據庫驅動的,例如,它們是頁面的某些標題,您也可以通過BaseController全局變量傳遞它:
請注意,您的控制器通常是另一個BaseController的范圍:
class Pages extends BaseController
{
}
在您的BaseController
您可以定義一些默認值:
class BaseController extends Controller
{
protected $myValues;
function getDefaultValues()
{
$this->myValues = array("something"=>"somethingElse");
return $this->myValues; // however this is an example, you may not need any method
// and the property itself might be enough.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.