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

Formations attachées aux applications

parent 6fef89ec
Loading
Loading
Loading
Loading
+3 −2
Changes for module/Application/config/merged/application.config.php: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ use Application\Controller\Application\ApplicationControllerFactory;
use Application\Form\Application\ApplicationForm;
use Application\Form\Application\ApplicationFormFactory;
use Application\Form\Application\ApplicationHydrator;
use Application\Form\Application\ApplicationHydratorFactory;
use Application\Provider\Privilege\ApplicationPrivileges;
use Application\Service\Application\ApplicationService;
use Application\Service\Application\ApplicationServiceFactory;
@@ -146,8 +147,8 @@ return [
        ],
    ],
    'hydrators' => [
        'invokable' => [
            ApplicationHydrator::class => ApplicationHydrator::class,
        'factories' => [
            ApplicationHydrator::class => ApplicationHydratorFactory::class,
        ]
    ]

+31 −0
Changes for module/Application/src/Application/Entity/Db/Application.php: 31 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -19,10 +19,13 @@ class Application {

    /** @var ArrayCollection */
    private  $activites;
    /** @var ArrayCollection */
    private  $formations;

    public function __construct()
    {
        $this->activites = new ArrayCollection();
        $this->formations = new ArrayCollection();
    }

    /**
@@ -141,4 +144,32 @@ class Application {
    {
        return $this->activites->contains($activite);
    }

    /**
     * @return Formation[]
     */
    public function getFormations()
    {
        return $this->formations->toArray();
    }

    /**
     * @param Formation $formation
     * @return Application
     */
    public function addFormation($formation)
    {
        $this->formations->add($formation);
        return $this;
    }

    /**
     * @param Formation $formation
     * @return Application
     */
    public function removeFormation($formation)
    {
        $this->formations->removeElement($formation);
        return $this;
    }
}
 No newline at end of file
+11 −0
Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Application.dcm.xml: 11 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -22,5 +22,16 @@
            </join-table>
        </many-to-many>

        <many-to-many field="formations" target-entity="Application\Entity\Db\Formation" inversed-by="formation" fetch="LAZY">
            <join-table name="application_formation">
                <join-columns>
                    <join-column name="application_id" referenced-column-name="id"/>
                </join-columns>
                <inverse-join-columns>
                    <join-column name="formation_id" referenced-column-name="id"/>
                </inverse-join-columns>
            </join-table>
        </many-to-many>

    </entity>
</doctrine-mapping>
+28 −0
Changes for module/Application/src/Application/Form/Application/ApplicationForm.php: 28 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,11 +2,15 @@

namespace Application\Form\Application;

use Application\Service\Formation\FormationServiceAwareTrait;
use Zend\Form\Element\Button;
use Zend\Form\Element\Select;
use Zend\Form\Element\Text;
use Zend\Form\Form;
use Zend\InputFilter\Factory;

class ApplicationForm extends Form {
    use FormationServiceAwareTrait;

    public function init()
    {
@@ -46,6 +50,22 @@ class ApplicationForm extends Form {
                'id' => 'url',
            ],
        ]);
        // url
        $this->add([
            'type' => Select::class,
            'name' => 'formations',
            'options' => [
                'label' => "Formations associées :",
                'empty_option' => "Sélectionner la ou les formations ...",
                'value_options' => $this->getFormationService()->getFormationsAsOptions(),
            ],
            'attributes' => [
                'id' => 'formations',
                'class'             => 'bootstrap-selectpicker show-tick',
                'data-live-search'  => 'true',
                'multiple'          => 'multiple',
            ],
        ]);
        // button
        $this->add([
            'type' => Button::class,
@@ -61,5 +81,13 @@ class ApplicationForm extends Form {
                'class' => 'btn btn-primary',
            ],
        ]);

        //filter
        $this->setInputFilter((new Factory())->createInputFilter([
            'libelle'               => [ 'required' => true,  ],
            'description'           => [ 'required' => false,  ],
            'url'                   => [ 'required' => false,  ],
            'formations'            => [ 'required' => false,  ],
        ]));
    }
}
 No newline at end of file
+5 −0
Changes for module/Application/src/Application/Form/Application/ApplicationFormFactory.php: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,16 +2,21 @@

namespace Application\Form\Application;

use Application\Service\Formation\FormationService;
use Zend\Form\FormElementManager;

class ApplicationFormFactory {

    public function __invoke(FormElementManager $manager)
    {
        /** @var FormationService $formationService */
        $formationService = $manager->getServiceLocator()->get(FormationService::class);

        /** @var ApplicationHydrator $hydrator */
        $hydrator = $manager->getServiceLocator()->get('HydratorManager')->get(ApplicationHydrator::class);

        $form = new ApplicationForm();
        $form->setFormationService($formationService);
        $form->init();
        $form->setHydrator($hydrator);

Loading