如何获得$ form-> getData()的结构

时间:2015-02-25 19:37:18

标签: forms symfony

我很难获得数组/对象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."}";
            }
          }
        }
      }
  }

1 个答案:

答案 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
   }
}
相关问题