Symfony2形式のprependClientTransformerとappendClientTransformerの違いは何ですか? prependClientTransformer、appendClientTransformer はいつ使用する必要がありますか。例はありますか?
2 に答える
これについて私が理解したこと:
DataTransformer を適用する FormType には、 getParent() メソッドで定義された親 Type があります。
prependClientTransformerは、渡された DataTransformerを、親の Type から適用されるものより前に適用します。
appendClientTransformerは、渡された DataTransformerを、親のTypeから適用されたものの後に適用します。
ソースでわかるように、これらのメソッドはclientTransformers
、フィールド データの変換に使用されるの呼び出しシーケンスを制御するために使用されます。カスタム フィールド タイプを作成する場合に便利です。
たとえばtag
、タグの配列に内部的に変換されるカンマ区切りの値を取るフィールド タイプを作成したいとします。その親をtext
フィールド タイプとして設定します。また、配列を文字列に、またはその逆に変換するタグ タイプのトランスフォーマーも作成しました。これで、タグ タイプの 2 つclientTranformer
、ValueToStringTransFormerとトランスフォーマーが最後の位置に配置されます。したがって、データをフォームにバインドするか、フォームを送信すると、symfony はクライアント データを文字列に変換し、変換された文字列を配列に変換します (ここで説明されているように)。逆の場合は、配列を文字列に変換してから、文字列をクライアント値に変換します (ここで定義)。ただし、ユースケースは見つかりませんでしprependClientTransformer
た:)。