Commit 747ee699 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

fix pb quand aucun domaine n'est sélectionné

parent c215c377
Loading
Loading
Loading
Loading
+4 −0
Changes for module/Depot/src/Depot/Controller/DepotController.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -1427,6 +1427,10 @@ class DepotController extends AbstractController
        if ($this->getRequest()->isPost()) {
            /** @var ParametersInterface $post */
            $post = $this->getRequest()->getPost();
            //Permet de gérer le cas où aucune sélection n'est effectuée (afin de passer dans l'hydrateur)
            if (!isset($post['domaineHal'])) {
                $post['domaineHal'] = array("domaineHal" => array(""));
            }
            $form->setData($post);
            if ($form->isValid()) {
                /** @var MetadonneeThese $metadonnee */
+5 −1
Changes for module/These/src/These/Controller/DomaineHalSaisieController.php: 5 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -39,6 +39,10 @@ class DomaineHalSaisieController extends AbstractActionController

        if ($request->isPost()) {
            $data = $request->getPost();
            //Permet de gérer le cas où aucune sélection n'est effectuée (afin de passer dans l'hydrateur)
            if (!isset($data['domaineHalFieldset'])) {
                $data['domaineHalFieldset'] = array("domaineHal" => array(""));
            }
            $form->setData($data);

            if ($form->isValid()) {
@@ -47,7 +51,7 @@ class DomaineHalSaisieController extends AbstractActionController
                } else {
                    $this->getTheseService()->update($these);
                }
                return $this->redirect()->toRoute('these/identite', ['these' => $these->getId()], [], true);
//                return $this->redirect()->toRoute('these/identite', ['these' => $these->getId()], [], true);
            }
        }

+4 −0
Changes for module/These/src/These/Controller/TheseSaisieController.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -61,6 +61,10 @@ class TheseSaisieController extends AbstractController {
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            //Permet de gérer le cas où aucune sélection n'est effectuée (afin de passer dans l'hydrateur)
            if (!isset($data['domaineHal'])) {
                $data['domaineHal'] = array("domaineHal" => array(""));
            }
            $form->setData($data);

            if ($form->isValid()) {
+5 −4
Changes for module/These/src/These/Form/DomaineHalSaisie/Fieldset/DomaineHalFieldset.php: 5 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -4,15 +4,15 @@ namespace These\Form\DomaineHalSaisie\Fieldset;

use Laminas\Form\Fieldset;
use Laminas\Form\Element\Select;
use Laminas\InputFilter\InputFilterProviderInterface;

class DomaineHalFieldset extends Fieldset
class DomaineHalFieldset extends Fieldset implements InputFilterProviderInterface
{
    private ?array $domainesHal = null;

    public function setDomainesHal($domainesHal): void
    {
        $this->domainesHal = $domainesHal;
        $this->get('domaineHal')->setEmptyOption('Sélectionnez une option');
        $this->get('domaineHal')->setValueOptions($this->domainesHal);
    }

@@ -26,7 +26,6 @@ class DomaineHalFieldset extends Fieldset
                'class' => 'selectpicker show-tick form-control',
                'data-live-search' => 'true',
                'id' => 'domaineHal',
                'placeholder' => "Entrez les deux premières lettres...",
                'multiple' => 'true'
            ]);
        $this->add($domaineHal);
@@ -38,7 +37,9 @@ class DomaineHalFieldset extends Fieldset
    public function getInputFilterSpecification(): array
    {
        return [
            'domaineHal' => ['required' => false],
            'domaineHal' => [
                'required' => false,
            ],
        ];
    }
}
 No newline at end of file
+7 −0
Changes for module/These/src/These/Form/DomaineHalSaisie/Fieldset/DomaineHalHydrator.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -33,6 +33,13 @@ class DomaineHalHydrator extends DoctrineObject
    public function hydrate(array $data, object $object): object
    {
        if(isset($data["domaineHal"]) && is_array($data["domaineHal"])){
            //Si aucun domaine n'est sélectionné, on retire les potentiels domaines déjà enregistrés
            if(count($data["domaineHal"]) === 1 && $data["domaineHal"][0] === ""){
                foreach ($object->getDomainesHal() as $domaineHal) {
                    $object->removeDomainesHal($domaineHal);
                }
                return parent::hydrate($data, $object);
            }
            foreach ($data["domaineHal"] as $idDomaineHal) {
                // Vérifier si le domaine est déjà associé à la thèse
                $domaineHalExistant = $object->getDomainesHal()->filter(function ($domaineHal) use ($idDomaineHal) {