我正在開發一個基於一些自定義CMS的項目,其中當我打電話時,CMS模塊將返回顯示塊。這些塊是使用我在不同文件中定義的自定義函數繪製的。當然,ob_start()
已用於CMS本身以保留輸出字符串。現在,正如我所看到的,只有在滿足某些條件(例如日期)時,纔會繪製一些內部塊(由CMS模塊調用的函數繪製)。因此,在某些情況下,由於被調用函數沒有任何回聲,因此只繪製塊的外部包裝(div
)。現在,我想通過檢查函數是否迴應某些東西來編輯該模塊。我的問題是,我不能使用這樣的事情:如何檢查在php中是否回顯了某些內容?
$temp = ob_get_contents();
ob_flush();
ob_start();
eval(trim($block->detail));//this is where custom function is called in module
$block = ob_get_contents();
ob_flush();
ob_start();
echo $temp;
if($block)
{
echo $start.$block.$end;//$start and $end contains div wrapper html
}
的原因是,這VIEW
模塊稱爲相同的組件內多次繪製根據不同的條件塊。像上面所做的那樣,多次繪製以前回顯的html(在調用視圖模塊之前)。我仍然堅持如何避免同一個html的多次回顯。 我知道這個問題有點複雜,但任何幫助將非常感激。
您不必刷新之前的OB _...,你可以將多個ob_start()一起嵌套! – Gerifield 2014-09-06 12:29:50
會跳過緩衝已經緩衝的通用輸出嗎? – Sayed 2014-09-06 12:30:57
是的! http://php.net/manual/en/function.ob-start.php 「輸出緩衝區是可堆疊的,也就是說,當另一個ob_start()處於活動狀態時,您可以調用ob_start(),只要確保調用ob_end_flush ()適當的次數,如果多個輸出回調函數處於活動狀態,那麼輸出將按照嵌套順序依次過濾。「 – Gerifield 2014-09-06 12:31:27