Marcin Zaremba
Marcin Zaremba

Reputation: 253

Symfony Form - clear session variable only when I enter the form

I want to clear session variable only when I enter my symfony form first time. In this example session is delete even when form is not valid - how can I change this?

public function dodajNewAction(Request $request, Pacjent $pacjent)
{
    unset($_SESSION['test']);

    $wykbad = new Wykbadpoz($pacjent);
    $wykbad->setRok(date('Y'));
    $wykbad->setMiesiac(date('n')); //miesiac bez zera wiodacego

    $form = $this->createForm('nfz_wykbadpoz_new', $wykbad);

    $form->handleRequest($request);

    return [
        'form' => $form->createView()
    ];
}

Upvotes: 0

Views: 669

Answers (1)

mykiwi
mykiwi

Reputation: 1693

In a Symfony project you should never use superglobals like $_SESSION ($_GET, $_POST, ...). You must use the Request object.

Like this:

public function dodajNewAction(Request $request, Pacjent $pacjent)
{
    $wykbad = new Wykbadpoz($pacjent);
    $wykbad->setRok(date('Y'));
    $wykbad->setMiesiac(date('n')); //miesiac bez zera wiodacego

    $form = $this->createForm('nfz_wykbadpoz_new', $wykbad);

    $form->handleRequest($request);

    $session = $request->getSession();
    if ($form->isValid() && $session->has('test')) {
        $session->remove('test');
    }

    return [
        'form' => $form->createView()
    ];
}

Upvotes: 2

Related Questions