2012-04-20 45 views
1

什麼是Symfony FormBuilder中的appendNormTransformer?什麼時候應該使用它來代替appendClientTransformer和prependClientTransformer什麼是Symfony FormBuilder中的appendNormTransformer?

+0

對於差,看http://stackoverflow.com/questions/10210347/what-is-the-difference-between-prependclienttransformer-and-appendclienttransfor – gremo 2012-04-20 14:47:05

+0

他誰問過這個問題;) – Matt 2012-04-20 15:27:32

+0

@Matt哈哈,沒注意到,對不起:D – gremo 2012-04-20 18:38:33

回答

3

Form.php類文檔塊摘自:

To implement your own form fields, you need to have a thorough understanding 
of the data flow within a form field. A form field stores its data in three 
different representations: 

(1) the format required by the form's object 
(2) a normalized format for internal processing 
(3) the format used for display 

A date field, for example, may store a date as "Y-m-d" string (1) in the 
object. To facilitate processing in the field, this value is normalized 
to a DateTime object (2). In the HTML representation of your form, a 
localized string (3) is presented to and modified by the user. 

所以(1)是應用程序的數據,(2)是歸一化數據和(3)是客戶數據。

現在,對於您的問題,它取決於哪些數據想要轉換。如果您需要轉換的客戶端數據(從(2)(3)),那麼您應該使用appendClientTransformerprependClientTransformer

在相反的,如果你想改變的歸一化數據(從(1)(2)),那麼你應該使用appendNormTransformerprependNormTransformer

因此,歸一化變換器位於(1)(2)之間((1) normalizeTransformer→(2))。和客戶端變壓器位於(2)(3)之間((2) clientTransformer - >(3)

另外,還要注意追加和預先準備的方法([追加|前插] [規範|客戶端]變壓器)將有可能被添加的方法來代替(添加[Norm | Client] Transformer)在Symfony 2.1中,請參閱GitHub上的this pull request以獲取更多信息。

希望這有助於
馬特