Symfony2 -在控制器/服务中获取表单元素标签和类型


Symfony2 - get form elements labels and types in controller/service

Symfony2 2.3.13中具有表单,同时遍历元素,例如:

$children = $form->all();
foreach($children as $name => $child){
    $child; // ->getLabel() ?
}

没有getLabel()方法,也没有getType(),我也需要。在做:

echo get_class($child);

我总是得到

Symfony'Component'Form'Form

有什么方法可以获得标签和类型吗?

我试着按照@Thomas Kelley的建议去做:

    $children = $form->all();
    foreach($children as $name => $child){
        echo '<pre>'; 
        var_dump($child->getType());
        echo '</pre>';
    }
以上代码的结果是:
Error: Call to undefined method Symfony'Component'Form'Form::getType()

$form->all()返回FormInterface的数组。

您可以通过getConfig()方法访问该FormInterface的配置,该方法返回FormConfigInterface。从这里,您可以访问类型和标签:

$children = $form->all();
foreach ($children as $child) {
    /** @var FormInterface $child */
    /** @var FormConfigInterface $config */
    $config = $child->getConfig();
    /** @var ResolvedFormTypeInterface */
    $type = $config->getType();
    /** @var string $label */
    $label = $config->getOption("label");
}

(注意getType()返回一个ResolvedFormTypeInterface)