【发布时间】:2015-06-09 11:01:22
【问题描述】:
symfony中出现的错误如下:
给定“字符串或 Symfony\Component\Form\FormTypeInterface”、“Proyecto\LavocBundle\Entity\Datos”类型的预期参数
我不会把所有的代码都放这么大的,我觉得问题出在类型上:
DatosType:
<?php
namespace Proyecto\LavocBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class DatosType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('empresa');
$builder->add('cuit');
$builder->add('localidad');
$builder->add('calle');
$builder->add('altura');
$builder->add('areaTel');
$builder->add('telefono');
$builder->add('areaCel');
$builder->add('celular');
$builder->add('email');
}
public function getName()
{
return 'datos_form';
}
}
用户类型:
<?php
namespace Proyecto\LavocBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('usuario');
$builder->add('pass');
}
public function getName()
{
return 'user_form';
}
}
RegistroUsuarioType(这是嵌入的表单):
<?php
namespace Proyecto\LavocBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Proyecto\LavocBundle\Entity\Datos;
class RegistroUsuarioType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options) {
parent::buildForm($builder, $options);
$builder->add('usuario', 'text');
$builder->add('pass', 'text');
$builder->add('datos', new Datos());
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Proyecto\LavocBundle\Entity\User'
));
}
public function getName() {
return 'RegistroUsuario_form';
}
}
表格控制器:
public function crearUsuarioDatosAction()
{
$request = $this->getRequest();
$usuario = new User();
$datos = new Datos();
$usuario->setDatos($datos);
$form = $this->createForm(new RegistroUsuarioType(), $usuario);
if($request->getMethod() == 'POST')
{
$form->bind($request);
if( $form->isValid() )
{
$em = $this->getDoctrine()->getEntityManager();
$em->persist($form);
$em->flush();
return $this->redirect($this->generateUrl('home'));
}
}
return $this->render('AtajoBundle:IngresarValores:crearUsuarioDatos.html.twig', array('form' => $form->createView()));
}
非常感谢大家的帮助
【问题讨论】: