Commit 7f157150 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

MultipageForm : ajout exemple de modif des boutons de navigation

parent cd13c39c
Loading
Loading
Loading
Loading
Loading
+16 −11
Original line number Diff line number Diff line
@@ -2,11 +2,12 @@

namespace UnicaenExemple\MultipageForm\Controller;

use UnicaenExemple\MultipageForm\Entity\ContactEntity;
use UnicaenExemple\MultipageForm\Form\ContactMultipageForm;
use Laminas\Http\Response;
use Laminas\Mvc\Controller\AbstractActionController;
use UnicaenExemple\MultipageForm\Entity\ContactEntity;
use UnicaenExemple\MultipageForm\Form\ContactMultipageForm;
use UnicaenMultipageForm\Controller\Plugin\MultipageFormPlugin;
use UnicaenMultipageForm\Form\Fieldset\MultipageFormNavFieldset;
use UnicaenMultipageForm\Form\MultipageForm;

/**
@@ -23,48 +24,52 @@ class ContactController extends AbstractActionController
    {
        $this->form = new ContactMultipageForm('contact');
        $this->form->setObject(new ContactEntity());
        $this->form->setActionPrefix('ajouter-'); //
        //$this->form->setActionPrefix('ajouter-');

//        $this->contact = new ContactEntity();
        $this->contact = new ContactEntity('Hochon', 'Paule', 'Mme', 'paule.hochon@mail.fr', 'Bonjour !');
    }

    public function ajouterAction(): Response
    public function startAction(): Response
    {
        $this->form->bind($this->contact);
        return $this->multipageForm($this->form)->start(); // réinit du plugin et redirection vers la 1ère étape
    }

    public function ajouterIdentiteAction(): Response|array
    public function identiteAction(): Response|array
    {
        $this->form->bind($this->contact);
        return $this->multipageForm($this->form)->process();
    }

    public function ajouterAdresseAction(): Response|array
    public function adresseAction(): Response|array
    {
        $this->form->bind($this->contact);
        return $this->multipageForm($this->form)->process();
    }

    public function ajouterMessageAction(): Response|array
    public function messageAction(): Response|array
    {
        // possibilité d'agir sur les boutons de navigation
        $navigationFieldsetPrototype = MultipageFormNavFieldset::create();
        $navigationFieldsetPrototype->getNextButton()->setValue("Passer au récapitulatif >");
        $this->form->setNavigationFieldsetPrototype($navigationFieldsetPrototype);

        $this->form->bind($this->contact);
        return $this->multipageForm($this->form)->process();
    }

    public function ajouterAnnulerAction(): Response
    public function annulerAction(): Response
    {
        $this->multipageForm($this->form)->cancel();
        return $this->redirect()->toRoute('exemple/contact');
    }

    public function ajouterConfirmerAction(): Response|array
    public function confirmerAction(): Response|array
    {
        return $this->multipageForm($this->form)->process();
    }

    public function ajouterEnregistrerAction(): false
    public function enregistrerAction(): false
    {
        $data = $this->multipageForm($this->form)->getFormSessionData();
        var_dump($data);
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ class ContactMultipageForm extends MultipageForm
            ->add(new AdresseFieldset(self::FIELDSET_2_NAME))
            ->add(new MessageFieldset(self::FIELDSET_3_NAME))
            ->add((new MultipageFormConfirmFieldset(self::FIELDSET_CONFIRM_NAME))->setLabel('Confirmation'))
            ->add(new Submit('save', ['label'=>"Enregistrer"]));
        ;
    }

    /**