Commit e4e60e06 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Nouveau formulaire

parent 0c6e19a3
Loading
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2,6 +2,10 @@

use UnicaenUtilisateur\Controller\UtilisateurController;
use UnicaenUtilisateur\Controller\UtilisateurControllerFactory;
use UnicaenUtilisateur\Form\SelectionUtilisateur\SelectionUtilisateurForm;
use UnicaenUtilisateur\Form\SelectionUtilisateur\SelectionUtilisateurFormFactory;
use UnicaenUtilisateur\Form\SelectionUtilisateur\SelectionUtilisateurHydrator;
use UnicaenUtilisateur\Form\SelectionUtilisateur\SelectionUtilisateurHydratorFactory;
use UnicaenUtilisateur\Form\User\InitCompteForm;
use UnicaenUtilisateur\Form\User\UserForm;
use UnicaenUtilisateur\Form\User\UserFormFactory;
@@ -249,12 +253,14 @@ return [
        ],
        'factories' => [
            UserForm::class => UserFormFactory::class,
            SelectionUtilisateurForm::class => SelectionUtilisateurFormFactory::class,
        ],
    ],

    'hydrators' => [
        'factories' => [
            UserHydrator::class => UserHydratorFactory::class,
            SelectionUtilisateurHydrator::class => SelectionUtilisateurHydratorFactory::class,
        ]
    ],
    
+55 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenUtilisateur\Form\SelectionUtilisateur;

use Laminas\Form\Element\Button;
use Laminas\Form\Form;
use Laminas\InputFilter\Factory;
use UnicaenApp\Form\Element\SearchAndSelect;

class SelectionUtilisateurForm extends Form
{
    private ?string $urlRecherche = null;

    public function setUrlRecherche(string $url)
    {
        $this->urlRecherche = $url;
    }

    public function init(): void
    {
        //agent
        $agent = new SearchAndSelect('user', ['label' => "Utilisateur·trice <span class='icon icon-obligatoire text-danger' title='Champ obligatoire'></span> :"]);
        $agent
            ->setAutocompleteSource($this->urlRecherche)
            ->setLabelOption('disable_html_escape', true)
            ->setAttributes([
                'id' => 'user',
                'placeholder' => "Nom de l'utilisateur·trice ...",
            ]);
        $this->add($agent);

        //Button
        $this->add([
            'type' => Button::class,
            'name' => 'enregistrer',
            'options' => [
                'label' => '<i class="fas fa-save"></i> Enregistrer',
                'label_options' => [
                    'disable_html_escape' => true,
                ],
            ],
            'attributes' => [
                'type' => 'submit',
                'class' => 'btn btn-success',
            ],
        ]);

        //InputFilter
        $this->setInputFilter((new Factory())->createInputFilter([
            'user' => [
                'required' => true,
            ],
        ]));
    }
}
 No newline at end of file
+19 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenUtilisateur\Form\SelectionUtilisateur;

trait SelectionUtilisateurFormAwareTrait
{
    private SelectionUtilisateurForm $selectUserForm;

    public function getSelectionUtilisateurForm(): SelectionUtilisateurForm
    {
        return $this->selectUserForm;
    }

    public function setSelectionUtilisateurForm(SelectionUtilisateurForm $selectUserForm): void
    {
        $this->selectUserForm = $selectUserForm;
    }

}
 No newline at end of file
+32 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenUtilisateur\Form\SelectionUtilisateur;

use Laminas\View\Helper\Url;
use Laminas\View\HelperPluginManager;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Container\NotFoundExceptionInterface;

class SelectionUtilisateurFormFactory {

    /**
     * @throws ContainerExceptionInterface
     * @throws NotFoundExceptionInterface
     */
    public function __invoke(ContainerInterface $container) : SelectionUtilisateurForm
    {
        /** @var HelperPluginManager $pluginManager */
        $pluginManager = $container->get('ViewHelperManager');
        /** @var Url $urlManager */
        $urlManager = $pluginManager->get('Url');
        /** @see AgentController::rechercherAction() */
        $url =  $urlManager->__invoke('unicaen-utilisateur/rechercher-interne', [], [], true);

        $hydrator = $container->get('HydratorManager')->get(SelectionUtilisateurHydrator::class);
        $form = new SelectionUtilisateurForm();
        $form->setUrlRecherche($url);
        $form->setHydrator($hydrator);
        return $form;
    }
}
 No newline at end of file
+18 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenUtilisateur\Form\SelectionUtilisateur;

use Laminas\Hydrator\HydratorInterface;

class SelectionUtilisateurHydrator implements HydratorInterface {

    public function extract(object $object): array
    {
        return [];
    }

    public function hydrate(array $data, object $object): object
    {
        return $object;
    }
}
 No newline at end of file
Loading