2017-06-19 125 views
0

TYPO3在管理面板中有很好的「模擬日期」選項。在Fluid中使用模擬日期

但這不會傳播到流體中

{f:format.date(date: 'today' format: 'Y-m-d')} 

顯然,這是PHP的工作,而不是TYPO3 API。

有沒有一種簡單的可能性來模擬一個虛擬的「今天」的日期,並把它傳遞給液體?

+1

模擬的時間是大幹快上的頁面生成設置一個PHP變量,所以你必須aconsistent時間戳爲您呈現(否則不同時間的計算可以用不同的時間戳工作,當頁面調用之前毫秒這可能導致即使在不同的日期午夜)。我不知道這個PHP-variabel可以通過輸入框訪問。可能不是流體。在最壞的情況下,您可以編寫一個返回此全局變量的小型PHP-viewhelper。 –

回答

0

您可以嘗試使用typoscript條件來聲明設置。

[yourcondition] 
    plugin.tx_your_ext.settings.dateOverride = 2017-11-11 11:11:11 
[global] 

然後確保設置傳遞給視圖。您可以在您的控制器操作中執行此操作

$this->view->assign('settings', $this->settings); 

然後將值傳遞給viewhelper。您可以使用任何可以由DateTime構造函數解釋的值。

{f:format.date(date: settings.dateOverride format: 'Y-m-d')} 

可能的TypoScript條件的列表:

https://docs.typo3.org/typo3cms/TyposcriptReference/Conditions/Reference/Index.html

如果您需要更動態地設置日期,你可以使用一個URL參數,並要求你的頁面,如:

yourpage.com/path/to/your/site?no_cache=1 & spoofedDate = 2017-11-11T11:11:11Z

我猜你如果使用typo3的模擬日期功能,可以利用DataSubmissionHook設置值。也許這給你最舒適。

要訪問請求參數在你的控制器:

$this->request->getArgument() 

或者

GeneralUtility::_GET() 

解決了的別緻方法是重載DateTime對象,所以它尊重模擬日期功能。

0

您可以使用安裝PHP timecop extension和最初設定的日期index.php

或者,打開一個特徵請求到流體,以支持模擬時間。