我很难获得数组/对象form-> getData()的结构。我也想知道有办法轻松搞定。
我尝试了以下内容,但有许多信息,因此它不可读
$data = $form->getData();
$for_twig_data = var_dump($data);
我也尝试过以下操作,但$ data_value_value是一个对象,因此我无法获取它:
$liste_key = '';
foreach($data as $data_key => $data_value)
{
$liste_key = $liste_key."[".$data_key."]";
if(is_array($data[$data_key]))
{
foreach($data_value as $data_value_key => $data_value_value)
{
$liste_key = $liste_key."(".$data_value_key.")".$data_value_value;
if(is_array($data[$data_key][$data_value_key]))
{
foreach($data_value_value as $data_value_value_key => $data_value_value_value)
{
$liste_key = $liste_key."{".$data_value_value_key."}";
}
}
}
}
}
答案 0 :(得分:1)
我不认为你有另一种可能性,而不是遍历数据集,但我建议你写一个递归函数来做到这一点,这样你就不必嵌套for循环,元素可以有无限的子层点。
这样的事情应该有效:
$liste_key = '';
$this->parseFormData($liste_key, $data);
...
function parseFormData(&$liste_key, $data){
foreach($data as $data_key => $data_value)
{
$liste_key = $liste_key."[".$data_key."]";
if(is_array($data[$data_key]))
{
$this->parseFormData($liste_key, $data_value)
}
}
}
(我没有测试过这个功能,所以我不能保证语法是正确的,但方法应该是正确的)
...
对于输出转储,请执行以下操作:
function yourformAction() {
if ($form->isValid()) {
echo '<pre>';
print_r($form->getData());
$liste_key = '';
$this->parseFormData($liste_key, $form->getData());
print_r($liste_key); // you could also use echo $liste_key;
die; // this is optional and will stop further processing
}
}