I have a controller in symfony2 like below, if the user form is valid it will redirect to some other link but if there is some error it will remain in the same page and shows the errors. simply general scenario when the client side validation is disabled and only sever side validation is checking for the errors.
/**
* Creates a new User entity.
*
* @Route("/create", name="admin_user_create")
* @Method("post")
* @Template("UserBundle:User:new.html.twig")
*/
public function createAction()
{
$entity = new User();
$request = $this->getRequest();
$form = $this->createForm(new UserType() , $entity);
$form->bindRequest($request);
if($form->isValid())
{
// DO SOMETHING ...
return $this->redirect($this->generateUrl('some_link' , array( 'user_id' => $entity->getId() )));
}
// If the form is NOT valid, it will render the template and shows the errors.
return array(
'entity' => $entity ,
'form' => $form->createView()
);
}
Scenario would be something like below:
- User input some invalid data for the form
- User submit the form
- Controller check if the form is valid
Since it is not valid it will render the template, in this case
@Template("UserBundle:User:new.html.twig")
- The route in the browser will be
/create
- If the user
click
on browser link and it notpost
will get an error
How can I fix this ? Do I have to redirect again? Since the method is post
is it possible to redirect ?
}
Don't specify the @Method("POST") and do this in the method:
You can accept
GET
orPOST
and do something link: