2014-01-16 92 views
0

當我在Zend 2.2的選擇元素中添加一個過濾器時遇到問題。當創建一個選擇元件,一個默認的驗證被添加到這些元素:Zend 2 - 選擇元素的默認InArray驗證器會丟失

該元素以在服務器上驗證,如果所選擇的值屬於的值增加一個InArray校驗到它的輸入過濾器規範。

,直到我添加自定義過濾器,該元素能正常工作:

$filter = new Input('element_name'); 
$filter->setRequired(true); 
$this->add($filter); 

這Zend的\輸入過濾器\輸入被添加到一個Zend \輸入過濾器\輸入過濾稍後添加到我的形式。從現在開始,默認驗證器丟失。

如何在不丟失默認驗證器的情況下添加過濾器來形成元素?

我錯過了什麼嗎?我不認爲這是默認行爲,因爲每個人都在拼命地詢問如何停用它。甚至有一個屬性可以禁用它('disable_inarray_validator'),但是,我想保留該驗證器而不將所有我選擇框的條目傳遞給我的InputFilter。另外我在Zend 2文檔中找不到任何東西。我想解決方案一定是簡單的。提前致謝。

注意:將InputFilter和InputFilterManager添加到表單時會發生同樣的情況。

+0

很想知道這個問題的答案了。我花了好幾個小時試圖讓這個工作。我嘗試使用表單管理器在我的控制器中獲取表單,而不是直接實例化表單。還嘗試在init()方法中添加我的字段而不是__construct。嘗試以多種方式創建輸入過濾器,在我的輸入過濾器中使用了$ factory-> createInput。也嘗試使用$ form-> setPreferFormInputFilter()方法,但沒有成功。看起來像一個錯誤或我錯過了一些東西。請發帖回答,如果你找到一個 –

回答

0

請先看看我對你的問題的評論。只有我認爲可能的工作,我沒有試圖讓這項工作的事情是:

$input->getFilterChain() 
     ->attachByName('stringtrim') 

$input->getFilterChain() 
    ->attach(new StringTrim()) 
+0

嗨,謝謝你的回覆。很高興知道我並不孤單,這個問題。我嘗試了你的建議,但沒有幫助。另外,ValidatorChain不是更重要嗎? FilterChain如何影響默認驗證器? – nick

+0

抱歉有點晚了,我寫了這個,並一直試圖解決這個問題整天和關閉。我的想法是,如果你單獨獲得過濾器鏈和驗證鏈,那麼你不應該覆蓋默認的驗證器。此外,我只處理默認過濾器,所以可能會混淆我的問題和你的問題。我打算在github上或者zf2郵件列表中發票,因爲它看起來像一個bug。這裏的一些東西似乎相關https://github.com/zendframework/zf2/pull/3218 –

+0

感謝您的鏈接,它明確了幾點。這似乎也是一個bug,在Zend \ Form \ Form類中有一個屬性$ useInputFilterDefaults,默認爲true。但這顯然不起作用。你可以發佈一個鏈接到你的機票/郵件列表嗎? – nick