symfony2使用过滤器丢失了表单参数

时间:2015-02-11 00:22:01

标签: php forms symfony post request

我需要一个带过滤器的下拉菜单,但是如果我添加一个查询构建器,请求会忽略发布的值。

在我的表单类型中,差异就是这个。

->add('jugador', 'entity', array(
    'class' => 'MSKLigaBundle:Jugadores',
    'label' => 'Jugador',
    'query_builder' => function( \Doctrine\ORM\EntityRepository $er) use($equipoId){
        return $er->createQueryBuilder('j') 
        ->where('j.equipo_id = :equipo')
        ->setParameter('equipo', $equipoId);
    },
    'property' => 'nombreCompleto',
    'empty_value' => "el jugador...",
    'required' => true))

和另一个wat,没有过滤器......

 ->add('jugador', 'entity', array(
    'class' => 'MSKLigaBundle:Jugadores',
    'label' => 'Jugador',
    'empty_value' => "Seleccionar Jugador",
    'property' => 'nombreCompleto'))

感谢您的帮助。

编辑:这是处理数据的控制器

$em = $this->getDoctrine()->getManager();
$request = $this->getRequest();

if($request->getMethod() == 'GET')
{
    $equipoId = $request->query->get('equipo');
    $equipo = $em->getRepository('MSKLigaBundle:Equipos')->find($equipoId);
    $pena = new Penas();
    if($equipo != null)
        $pena->setEquipo( $equipo );
    else
        return $this->redirect($this->generateUrl( 'admin_penas'));
    $penasForm = new PenasType();
    $penasForm->setEquipo($equipoId);
    $form = $this->createForm( $penasForm, $pena);
}
else if($request->getMethod() == 'POST')
{
    $pena = new Penas();
    $form = $this->createForm( new PenasType(), $pena);
    $form->bind($request);
    $pena->setPartidosPendientes( $pena->getPartidosTotales() );
    if( $form->isValid() ){
        $em->persist($pena);
        $em->flush();
    }
}

return $this->render( 'MSKLigaBundle:Penas:new.html.twig', array('form' => $form->createView() ) );

0 个答案:

没有答案