Symfony3 - Losing my form data

Hello,

After form submission, I can’t retrieve the data of my form. When I var_dump the request, they are not listed.

Here is the log excerpt corresponding to the request :

[2016-09-09 17:16:47] request.INFO: Matched route “{route}”. {“route”:“TasksForm”,“route_parameters”:{“_controller”:“AppBundle\Controller\TasksFormController::tasksFormAction”,“_route”:“TasksForm”},“request_uri”:“http://localhost:8000/app_dev.php/TasksForm",“method”:"POST”}
[2016-09-09 17:16:47] security.INFO: Populated the TokenStorage with an anonymous Token.
[2016-09-09 17:16:47] request.INFO: Matched route “{route}”. {“route”:“TaskCreated”,“route_parameters”:{“_controller”:“AppBundle\Controller\TaskCreatedController::taskCreatedAction”,“_route”:“TaskCreated”},“request_uri”:“http://localhost:8000/app_dev.php/TaskCreated",“method”:"GET”}
[2016-09-09 17:16:47] security.INFO: Populated the TokenStorage with an anonymous Token.

tasksFormAction uses a POST, but taskCreatedAction receives a GET…

Thanks in advance,

MC

Here are my files :

// src/AppBundle/Entity/TaskSetClass.php
namespace AppBundle\Entity;
class TaskSetClass
	{
	protected $taskName;
	protected $dueDate;
	public function getTaskName()
		{
		return $this->taskName;
		}
	public function setTaskName($taskName)
		{
		$this->taskName = $taskName;
		}
	public function getDueDate()
		{
		return $this->dueDate;
		}
	public function setDueDate(\DateTime $dueDate = null)
		{
		$this->dueDate = $dueDate;
		}
	}
/* AppBundle/Form/TasksFormType.php */
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\OptionsResolver\OptionsResolver;
/* */
class TasksFormType extends AbstractType
	{
	public function buildForm(FormBuilderInterface $builder, array $options)
		{
		$builder
			->setMethod('POST')
			->add('taskName')
			->add('dueDate', DateType::class, array('widget' => 'choice',))
			->add('save', SubmitType::class, array('label' => 'Create Task'))
		;
		}
	public function getName()
		{
		return 'tasks_form';
		}
	public function setDefaultOptions(OptionsResolverInterface $resolver)
		{
		$resolver->setDefaults(array(
								'data_class' => 'AppBundle\Entity\TaskSetClass',
								));
		}
	}
// src/AppBundle/Controller/TaskFormController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use AppBundle\Entity\TaskSetClass;
use AppBundle\Form\TasksFormType;
/* */
class TasksFormController extends Controller
	{
    public function tasksFormAction(Request $request)
	    {
        $taskSet = new taskSetClass();
        $TasksFormType=new TasksFormType();
        $form = $this->createForm(TasksFormType::class, $taskSet);
        $form->handleRequest($request);
		if($form->isSubmitted())
			{
			if($form->isValid())
				{
				$taskSet = $form->getData();
				return $this->redirectToRoute('TaskCreated', array('task' => $taskSet,));
				}
			else
				{
				$message='Not valid '.json_encode($form->getData());
				}
			}
		else
			{
			$message='Not submitted ';
			}
        return $this->render('tasksForm.html.twig', array('form' => $form->createView(),'message'=>$message,));
        }
    }
// src/AppBundle/Controller/TaskCreatedController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
/* */
class TaskCreatedController extends Controller
	{
	public function taskCreatedAction(Request $request)
		{
		$task = $request->request->get('tasks_form');  // name of the generated form
		return $this->render('taskCreated.html.twig', array('task' => $task,));
		}
	}

Damn me… Everything made sense reading the doc. Here is the correct TasksFormController.php :

<?php
// src/AppBundle/Controller/TaskFormController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

use AppBundle\Entity\TaskSetClass;
use AppBundle\Form\TasksFormType;

class TasksFormController extends Controller
	{
	public function tasksFormAction(Request $request)
		{
		$taskSet = new TaskSetClass();
		$TasksFormType=new TasksFormType();
		$form = $this->createForm(TasksFormType::class, $taskSet);
		$form->handleRequest($request);
		if($form->isSubmitted())
			{
			if($form->isValid())
				{
				$taskName=$form->get('taskName')->getData();
				$taskDueDate=$form->get('taskDueDate')->getData();

				$taskSet->setTaskName($taskName);
				$taskSet->setTaskDueDate($taskDueDate);
				
				$entityManager=$this->getDoctrine()->getManager();
				$entityManager->persist($taskSet);
				$entityManager->flush();
				
				return new Response('Task '.$taskName.' has been created on '.json_encode($taskDueDate).'.');
				}
			else
				{
				$message='Not valid '.json_encode($form->getData());
				}
			}
		else
			{
			$message='Not submitted ';
			}
		return $this->render('tasksForm.html.twig', array('form' => $form->createView(),'message'=>$message,));
		}
	}

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.