0
我在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())
);
}
如果將表單配置爲POST,則isValid()方法將返回false,並且表單將被呈現...... 我可以使用第二個動作的路徑來完成所有過程(即http:/ /domain.com/crear)。我不需要添加任何事情的行動。 –
不明白。你問你是否可以在一個行動中做到這一點。現在你告訴我,你可以簡單地使用第二個動作? :D – sebbo
哈哈,我知道我可以做到這一點只是第二個動作...它會顯示窗體並處理它... 但是因爲我在Symfony文檔中看到他們使用兩個動作(和兩個路徑),所以我想知道這樣做的好處是什麼。 以下是我正在談論的內容:http://symfony.com/doc/current/cookbook/doctrine/registration_form.html#handling-the-form-submission。爲什麼不只是一個顯示和處理表單的動作呢? isValid()將在處理操作中返回false,並且表單將被呈現...... 我認爲可能有一個原因... –