YAMLからシリアル化されていないフォームデータの多次元配列があります。そのため、次のようになります。
Array(
'name' => 'Somone',
'email' => 'someone@none.local',
'billing' => Array(
'address_1' => '1234 Somewhere'
'address_2' => NULL,
'city' => 'Somewhere',
'state' => 'ST'
'country' => 'CO'
'postal_code' => '12345'
),
'shipping' => Array(
'address_1' => '1234 Somewhere'
'address_2' => NULL,
'city' => 'Somewhere',
'state' => 'ST'
'country' => 'CO'
'postal_code' => '12345'
)
);
私がする必要があるのは、CSVを出力できるようにこれをフラット化することです。したがって、次のようになります。
Array(
'name' => 'Somone',
'email' => 'someone@none.local',
'billing_address_1' => '1234 Somewhere'
'billing_address_2' => NULL,
'billing_city' => 'Somewhere',
'billing_state' => 'ST'
'billing_country' => 'CO'
'billing_postal_code' => '12345'
'shipping_address_1' => '1234 Somewhere'
'shipping_address_2' => NULL,
'shipping_city' => 'Somewhere',
'shipping_state' => 'ST'
'shipping_country' => 'CO'
'shipping_postal_code' => '12345'
);
配列/ハッシュの深さはわかりません。ここに示すように、2レベルしかない場合もあれば、5レベルの場合もあります。
また、これはSymfony 1.4に含まれているため、必要に応じて、すべての贅沢を備えたsfFormを利用できます。ウィジェットスキーマとウィジェットを使用してこれを行うための賢明な方法があるはずだと思います。ただし、可能であれば、データをフォームにバインドして戻すことは避けたいと思います。これは実際のフォーム送信プロセスの一部ではありませんが、管理者が送信されたデータのセットをダウンロードするためのアクションでは完全に分離されています。