在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()
答案 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
)