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

时间:2014-05-27 19:01:33

标签: php forms symfony

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()

1 个答案:

答案 0 :(得分:5)

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

您可以通过FormInterface方法访问该getConfig()的配置,该方法返回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