2012-10-16 65 views
0

我正在處理管理生成器模塊。我想隱藏項目列表,直到用戶使用過濾器。所以我想檢查一下,如果過濾器表單已經發送。如何檢查過濾器是否已應用於模板中?

是否有任何變化我可以在indexSuccess.php模板中檢查此問題?

回答

2

過濾器在用戶提交時存儲在會話中。

因此,在您的模板中,您可以通過調用會話來訪問已定義的過濾器。如果您沒有默認篩選器,它將返回一個空陣列(如果使用輸出保護,則可能爲sfOutputEscaperArrayDecorator)。

如果模塊名稱是car例如,您可以使用讓您的模板中的過濾器:

$filters = $sf_user->getAttribute('car.filters', null, 'admin_module'); 

如果您使用的輸出保護,你可以這樣做:

$filters = sfOutputEscaper::unescape($sf_user->getAttribute('car.filters', null, 'admin_module')); 

如果你這樣做沒有過濾器,你會得到像這樣的var_dump(第一種解決方案):

object(sfOutputEscaperArrayDecorator)[181] 
    private 'count' => int 0 
    protected 'value' => 
    array 
     empty 
    protected 'escapingMethod' => string 'esc_specialchars' (length=16) 

,並與第二:

array 
    empty 

例如,如果你有一些過濾器定義,您將獲得:

array 
    'model' => 
    array 
     'text' => string 'test' (length=4) 
    'updated_at' => 
    array 
     'from' => null 
     'to' => null 
    'created_at' => 
    array 
     'from' => null 
     'to' => null 
相關問題