CI中

2012-03-01 17 views
1

使用驗證後坦然的數據我在笨,這個驗證規則:CI中

'bookForm' => array(
    array(
     'field' => 'title', 
     'label' => 'Title', 
     'rules' => 'trim|required|min_length[10]' 
    ) 
) 

,我在想,如果我這樣做是正確的還是錯誤的,因爲當我輸入一個空格,然後通過一個字符串,長度爲10,它應該是修剪和評估,如果它是一個長度爲10的字符串 - 它會這樣做。

但是,當我在通過驗證後嘗試獲取數據時,字符串仍然佔用前面的空間。這是CI的正確行爲嗎?我的意思是我只是在驗證中修剪數據,我是否必須再次修改那些用於存儲的數據?如果我真的需要字符串MD5'ed,我會再次做MD5之後? (談冗餘)

+1

我編輯了我的答案。不知道爲什麼我認爲正常行爲會在驗證後重復操作。如果這在2.2.0中仍然存在,那可能是一個錯誤。該說明只是說在最終的驗證中使用您的準備功能,而不是複製它。 – 2014-07-08 00:19:23

回答

2

看看 docs我們可以看到確實的內容必須在驗證後修剪。

注意:您通常會希望在驗證規則之後使用準備功能,因此如果出現錯誤,原始數據將顯示在表單中。

EDIT

在CI 2.2.0與md5功能的快速測試表明,該POST變量被驗證之後改變,避免冗餘。

+0

那麼這意味着我必須在驗證規則中進行修剪,並在通過後再次執行修剪操作? (其實我對這條線感到困惑,因爲它沒有示例它的意思) – Joseph 2012-03-02 00:17:16

+0

嗯,是有道理的。 – Joseph 2012-03-02 00:27:58

+1

我是通過谷歌搜索結果來到這裏的,我想澄清一點,就2014年而言,這已經不再是事實。使用一個準備函數實際上會修改POST元素的變化,所以如果你在'name'上添加trim,$ this-> input-> post('name')將返回修剪後的字符串。這是預期的行爲(我不認爲,例如,爲驗證目的使用xss_clean或md5是有用的) – 2014-07-06 19:56:51