2012-12-26 22 views
0

讓我們假設我有一個用戶註冊表單。由於密碼必須以md5編碼存儲,所以最好的辦法是將其轉換爲redhand,但看起來request是隻讀的。如何在處理期間更改表單域?Symfony 1.4如果我想要一個表單域來改變某些東西,該怎麼辦?

+1

你是什麼意思由* redhand做*?順便說一下,md5很弱。 [使用更強大的東西](http://stackoverflow.com/a/401684/569101)(如sha1或bcrypt)。 – j0k

+0

在請求到達之後並且在它進入數據庫之前。在此期間,我想編碼它。 – user1929946

回答

1

您可以使用窗體的自定義驗證器。創建這樣一個類:

<?php 

class encodeValidator extends sfValidatorBase 
{ 
    /** 
    * @see sfValidatorBase 
    */ 
    protected function doClean($value) 
    { 
    return md5($value); //md5 can be replaced with another encoding method 
    } 
} 

接下來,當您創建窗體中添加你所創建的自定義驗證,像這樣:

$this->setWidget('field_name', new sfWidgetFormInputText()); 
$this->validatorSchema['field_name'] = new encodeValidator(); 
+0

是不是有更容易的解決方案呢?前一段時間,編輯_POST數組更容易。例如,有一個「自動增量」ID,我不需要它,但驗證程序會失敗 – user1929946

+1

那麼,在框架中,你總是可以通過你的方式來實現。這只是一個「Symfony」的方式來實現這一點。 :P – Leprosy

相關問題