我已经定义了一个只有一个'集合'类型字段的表单:
<?php
namespace GMC\AccesoSistemaBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use GMC\AccesoSistemaBundle\Form\FuncionType;
class FuncionesType Extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('funciones', 'collection', array(
'type' => new FuncionType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false));
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'data_class' => null
));
}
public function getName() {
return 'gmc_accesosistemabundle_funcionestype';
}
然后我在我的控制器中创建一个表单:
public function mostrarFuncionesAction() {
$em = $this->getDoctrine()->getManager();
$funciones = $em->getRepository('AccesoSistemaBundle:Funcion')->findAll();
$formulario = $this->createForm(new FuncionesType(), $funciones);
return $this->render(
'AccesoSistemaBundle:Default:funciones.html.twig',
array('formulario' => $formulario->createView())
);
}
但即使$ funciones有两条记录,表格的'funciones'集合也是空的,为什么呢?我错过了什么吗?
如你所见,我是Symfony2的新手,请耐心等待。
提前感谢您的帮助!
答案 0 :(得分:1)
Symfony对您当前的代码所做的是:
functiones
的属性
如果要使用实体mappin,则必须将表单字段(使用$builder->add('<name_here>')
)命名为Function类的属性,该属性是Function
的集合。
否则,您可以尝试用阵列水合表格,并给出:
$formulario = $this->createForm(new FuncionesType(), array('functiones' => $funciones));