Witam mam następujący problem.
Stworzyłem dość prosty formularz z kilkoma polami tj, nazwa, opis, nagłówek, data, treść itp. żadne z tych pól nie może pozostać puste. Mam również pole typu ChoiceType (prosty select), który z pomocą jQuery usuwa część formularza (tworzę różne typy wpisów, które różnią się między sobą polami - nieznacznie, usuwane są dwa niepotrzebne pola). W przypadku w którym wszystkie pola są wykorzystywane jest ok, jednak kiedy usuwam js'owo dwa pola, przy walidacji dostaje komunikat że te konkretne pola są puste.
Próbowałem nadpisać dane formularza po jego wysłaniu a przed jego walidacją jednak dostaje komunikat o błędzie: "You cannot change the data of a submitted form.".
Jak to ugryźć? Będę wdzięczny za każdą pomoc ;)
Oto mój kontroler:
/**
* Creates a new sites entity.
*
* @Route("/new", name="myapp_admin_sites_new")
* @Method({"GET", "POST"})
* @Template
*/
public function newAction(Request $request)
{
$sites = new Sites();
$form = $this->createForm(SitesType::class, $sites);
$form->handleRequest($request);
if ($form->get('clear')->isClicked()) {
unset($sites);
$sites = new Sites();
$form = $this->createForm(SitesType::class, $sites);
}
if((int)$form->get('parent')->getData() == 9999){
$form->get('title')->setData('empty');
$form->get('description')->setData('empty');
}
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$maxOrder = $em->getRepository('myappAdminBundle:Sites')->findMaxOrder();
$sites->setOrd($maxOrder);
$em->persist($sites);
$em->flush();
return $this->redirectToRoute('myapp_admin_sites_index', array('current' => $sites->getId()));
} else if ($form->isSubmitted()){
$this->get('session')->getFlashBag()->add('error', 'Błąd walidacji formularza. Popraw poniższe błędy.');
}
return array(
'sites' => $sites,
'form' => $form->createView(),
'hide' => ((int)$form->get('parent')->getData() == 9999) ? true : false
);
}