2016-12-01 54 views
0

我已經創建了一個類來過濾我的extbase擴展中所有約會的列表 - AppointmentFilter(從this教程獲得了一個需求對象的想法)。如何在整個會話中保留過濾器對象的值

/** 
* action list 
* @param \Vendor\Extension\Domain\Model\AppointmentFilter $appointmentFilter 
* @return void 
*/ 
public function listAction($appointmentFilter = null) { 
    if ($appointmentFilter === null) { 
     $appointmentFilter = new \Vendor\Extension\Domain\Model\AppointmentFilter(); 
    } 
    $appointments = $this->appointmentRepository->findAppointmentsForList($appointmentFilter); 

    $this->view->assignMultiple(array(
     'appointments' => $appointments, 
     'appointmentFilter' => $appointmentFilter 
    )); 
} 

到目前爲止,它工作正常,但有一個問題,當我選擇像editnew另一個動作,因爲我總是傳遞整個AppointmentFilter對象的行動,以保持其值。如果我不這樣做,並返回到list我的控制器將再次使用默認值創建一個新的過濾器。
現在我有很多操作,所以它真的很煩人,一直在通過該過濾器。
有沒有一種簡單的方法可以讓用戶在更改一次後保持不變,而不需要在所有操作中傳遞它或者不必爲其創建數據庫表?
如果是這樣 - 如何?

+1

也許你可以將這些設置存儲在會話中? http://stackoverflow.com/questions/17440847/typo3-extbase-set-and-get-values-from-session –

+0

完美,與解決方案的答案似乎工作:) –

回答

0

查看http://lbrmedia.net/codebase/Eintrag/extbase-backend-frontend-session-class/的教程,Marcel Briefs編寫了一個SessionHandler的抽象實現,它允許您將數組作爲會話數據進行存儲和檢索。

然後,如果您的過濾視圖有任何參數,請將您的整個參數數組存儲爲一個鍵,或者如果沒有給出,則從會話數據中恢復整個參數數組。

+0

該實施的優勢是什麼而不是使用2行代碼? - 看到接受的答案:http://stackoverflow.com/questions/17440847/typo3-extbase-set-and-get-values-from-session 它是否可能在後端使用它? –

+0

優點是擁有一個乾淨的類模型,您可以將其集成到任何控制器中,並且無需進一步操作即可重用。我原本想詳細說明並提供實際的代碼,但我目前的實現太具體,不能用於任何用途。 – j4k3

相關問題