在Symfony2 2.3.13
迭代元素时形成,例如这样:
$children = $form->all();
foreach($children as $name => $child){
$child; // ->getLabel() ?
}
Run Code Online (Sandbox Code Playgroud)
没有getLabel()
方法,也没有getType()
,我也需要.做的时候:
echo get_class($child);
Run Code Online (Sandbox Code Playgroud)
我总是得到
Symfony\Component\Form\Form
Run Code Online (Sandbox Code Playgroud)
有没有办法获得标签和类型?
更新
我试图做@Thomas Kelley提出的建议:
$children = $form->all();
foreach($children as $name => $child){
echo '<pre>';
var_dump($child->getType());
echo '</pre>';
}
Run Code Online (Sandbox Code Playgroud)
以上代码导致:
Error: Call to undefined method Symfony\Component\Form\Form::getType()
Run Code Online (Sandbox Code Playgroud)
$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");
}
Run Code Online (Sandbox Code Playgroud)
(注意getType()
返回a ResolvedFormTypeInterface
)