我需要一个带过滤器的下拉菜单,但是如果我添加一个查询构建器,请求会忽略发布的值。
在我的表单类型中,差异就是这个。
->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() ) );