簡體   English   中英

如何在Laravel中保持各個頁面/控制器之間的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM