Commit c7a231f5 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Mise à jour de l'exemple d'utilisation de unicaen/multipage-form v2

parent b16a9b97
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@
    "php": "^8.0",
    "unicaen/app": "^6.0",
    "unicaen/bjy-authorize": "^6.0",
    "unicaen/multipage-form": "dev-master"
    "unicaen/multipage-form": "^2.0"
  },
  "extra": {
    "branch-alias": {
+57 −7
Original line number Diff line number Diff line
@@ -3,12 +3,14 @@
namespace UnicaenExemple\MultipageForm\Controller;

use Laminas\Http\Response;
use Laminas\Http\Response as HttpResponse;
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;
use UnicaenMultipageForm\Manager\Result;

/**
 * @method MultipageFormPlugin multipageForm(MultipageForm $form)
@@ -28,6 +30,7 @@ class ContactController extends AbstractActionController

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

    public function startAction(): Response
@@ -38,13 +41,41 @@ class ContactController extends AbstractActionController
    public function identiteAction(): Response|array
    {
        $this->form->bind($this->contact);
        return $this->multipageForm($this->form)->process();

        $result = $this->multipageForm($this->form)->process();
        if ($result instanceof HttpResponse) {
            return $result;
        }
        if ($result instanceof Result) {
            if ($result->isPost()) {
                // si besoin, faire qqchose avec les données POSTées à cette étape
                $postData = $result->getPostData();
                // ...
            }
            return $result->getRedirect();
        }

        return $result;
    }

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

        $result = $this->multipageForm($this->form)->process();
        if ($result instanceof HttpResponse) {
            return $result;
        }
        if ($result instanceof Result) {
            if ($result->isPost()) {
                // si besoin, faire qqchose avec les données POSTées à cette étape
                $postData = $result->getPostData();
                // ...
            }
            return $result->getRedirect();
        }

        return $result;
    }

    public function messageAction(): Response|array
@@ -55,25 +86,44 @@ class ContactController extends AbstractActionController
        $this->form->setNavigationFieldsetPrototype($navigationFieldsetPrototype);

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

        $result = $this->multipageForm($this->form)->process();
        if ($result instanceof HttpResponse) {
            return $result;
        }
        if ($result instanceof Result) {
            if ($result->isPost()) {
                // si besoin, faire qqchose avec les données POSTées à cette étape
                $postData = $result->getPostData();
                // ...
            }
            return $result->getRedirect();
        }

        return $result;
    }

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

    public function confirmerAction(): Response|array
    {
        return $this->multipageForm($this->form)->process();
        $result = $this->multipageForm($this->form)->process();
        if ($result instanceof HttpResponse) {
            return $result;
        }
        if ($result instanceof Result) {
            return $result->getRedirect();
        }
        return $result;
    }

    public function enregistrerAction(): false
    {
        $data = $this->multipageForm($this->form)->getFormSessionData();
        var_dump($data);
        $this->multipageForm($this->form)->cancel();
        return false;
    }
}
 No newline at end of file
+2 −42
Original line number Diff line number Diff line
<?php
namespace UnicaenExemple\MultipageForm\Form;

use InvalidArgumentException;
use Laminas\Form\Element\Submit;
use UnicaenExemple\MultipageForm\Fieldset\AdresseFieldset;
use UnicaenExemple\MultipageForm\Fieldset\IdentiteFieldset;
use UnicaenExemple\MultipageForm\Fieldset\MessageFieldset;
use UnicaenExemple\MultipageForm\Hydrator\ContactHydrator;
use UnicaenMultipageForm\Form\Fieldset\MultipageFormConfirmFieldset;
use UnicaenMultipageForm\Form\Fieldset\MultipageFormNavFieldset;
use UnicaenMultipageForm\Form\MultipageForm;

/**
@@ -36,45 +33,8 @@ class ContactMultipageForm extends MultipageForm
        ;
    }

    /**
     * 
     * @param string $fieldsetName 
     * @param bool $valid
     * @param string $navElementName
     * @return array
     * @throws InvalidArgumentException
     */
    public function createSamplePostDataForFieldset($fieldsetName, $valid = true, $navElementName = MultipageFormNavFieldset::NAME_NEXT): array
    public function isFieldsetReachable(string $fieldsetName, array $formData, array $previousFieldsets): bool
    {
        switch ($fieldsetName) {
            case self::FIELDSET_1_NAME:
                $data = [
                    'nom'    => $valid ? "Hochon" : "",
                    'prenom' => "Paul",
                    'civ'    => "M",
                ];
                break;
            case self::FIELDSET_2_NAME:
                $data = [
                    'email' => $valid ? "paul.hochon@domain.fr" : "paul.hochon@domain",
                ];
                break;
            case self::FIELDSET_3_NAME:
                $data = [
                    'message' => "Hello, world!",
                ];
                break;
            default:
                $data = [];
                break;
        }
        if ($navElementName) {
            $data = array_merge($data, [
                MultipageFormNavFieldset::NAME => [$navElementName => $navElementName],
            ]);
        }
        return [
            $fieldsetName => $data,
        ];
        return true;
    }
}
 No newline at end of file