我已经在Symfony上看到了文档,并且在代码中自动生成了教条实体的CRUD,为处理表单创建了两个动作。一个动作第一次“显示”表单(使用一个路径),然后另一个(显示不同的路径)验证并处理表单。如果出现错误,此操作将再次显示该表单。我看不出为什么两个行为有不同的路径?我可以用一条路径一个动作......
例如
/**
* @Route("registrar")
* @Template
*/
public function registerAction() {
$usuario = new \Caja\LiquidacionesBundle\Entity\Usuario();
$form = $this->createForm( new \Caja\LiquidacionesBundle\Form\UsuarioType(),
$usuario,
array(
'action' => $this->generateUrl('usuario_crear')
));
return array( 'form' => $form->createView() );
}
/**
* @Route("crear", name="usuario_crear" )
*
*/
public function createAction() {
$usuario = new \Caja\LiquidacionesBundle\Entity\Usuario();
$form = $this->createForm(new \Caja\LiquidacionesBundle\Form\UsuarioType, $usuario );
$form->handleRequest($this->getRequest());
if( $form->isValid() ) {
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($usuario);
$usuario->setPassword( $encoder->encodePassword( $usuario->getPassword(), $usuario->getSalt() ) );
$em = $this->getDoctrine()->getManager();
$em->persist( $usuario );
$em->flush();
//TODO: Change this shit
return new Response( "Usuario creado con exito." );
}
return $this->render( 'CajaLiquidacionesBundle:Usuario:registrarUsuario.html.twig',
array( 'form' => $form->createView() )
);
}
答案 0 :(得分:0)
您当然可以使用一个操作,然后决定请求方法是POST
处理表单还是GET
只是传递表单。反对的论点是你的控制器动作变得更大并且包含更多逻辑。如果你可以随意使用一个动作。