Skip to content
Snippets Groups Projects
Select Git revision
  • 1c8ebed546d00ee5e2858c0d2e66bc80ae9f5328
  • master default protected
  • ll-workflow
  • alc-scindage-donnees-pj
  • b24
  • FJ_LL_Tbl_Contrat
  • alc-docker-node
  • ll-apiplatform
  • php84
  • ll-rgpd
  • b23
  • alc-filtre-type-intervenant
  • ll-sans-mdb5
  • formules-ancienne-infra
  • ll-formules
  • alc-intervenant-dmep
  • ll-suppr-v_vol-s
  • b20
  • ll-postgresql
  • b23.0.1
  • b22
  • 24.8
  • 24.7
  • 24.6
  • 24.5
  • 24.4
  • 24.3
  • 24.2
  • 24.1
  • 24.0
  • 23.15
  • 24.0-beta19
  • 24.0-beta18
  • 24.0-beta17
  • 24.0-beta16
  • 24.0-beta15
  • 24.0-beta14
  • 24.0-beta13
  • 23.14
  • 24.0-beta12
  • 24.0-beta11
41 results

NewOseForm.php

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    NewOseForm.php 3.12 KiB
    <?php
    
    use UnicaenCode\Form\ElementMaker;
    use UnicaenCode\Util;
    
    /**
     * @var $this       \Application\View\Renderer\PhpRenderer
     * @var $controller \Zend\Mvc\Controller\AbstractController
     * @var $viewName   string
     * @var $sl         \Zend\ServiceManager\ServiceLocatorInterface
     */
    
    
    ?>
        <h1>Création d'un nouveau formulaire</h1>
        <h3>Etape 1 : Paramétrage</h3>
    
    <?php
    
    $form = new \Zend\Form\Form();
    $form->add(ElementMaker::selectModule(
        'module', 'Module dans lequel sera placé votre formulaire'
    ));
    $form->add(ElementMaker::select(
        'type', 'Type de formulaire (Form ou Fieldset)', ['Form' => 'Form', 'Fieldset' => 'Fieldset'], 'Form'
    ));
    $form->add(ElementMaker::text(
        'classname', 'Nom de classe du formulaire (en CamelCase, avec éventuellement un namespace avant : MonNamespace\Exemple)', 'Exemple'
    ));
    $form->add(ElementMaker::checkbox(
        'useHydrator', 'Implémenter un hydrateur spécifique'
    ));
    $form->add(ElementMaker::checkbox(
        'generateTrait', 'Générer un trait', true
    ));
    $form->add(ElementMaker::checkbox(
        'generateInterface', 'Générer une interface', false
    ));
    $form->add(ElementMaker::checkbox(
        'useGetter', 'Générer des getters dans les traits et les interfaces', true
    ));
    $form->add(ElementMaker::checkbox(
        'generateFactory', 'Générer une factory', true
    ));
    $form->add(ElementMaker::submit('generate', 'Générer le formulaire'));
    $form->setData($controller->getRequest()->getPost());
    
    Util::displayForm($form);
    
    if ($controller->getRequest()->isPost() && $form->isValid()) {
    
        $type              = $form->get('type')->getValue();
        $classname         = $form->get('classname')->getValue();
    
        $sCodeGenerator = $sl->get('UnicaenCode\CodeGenerator');
        /* @var $sCodeGenerator \UnicaenCode\Service\CodeGenerator */
    
        $params = $sCodeGenerator->generateFormParams([
            'type'              => $type,
            'classname'         => $form->get('module')->getValue() . '\\Form\\' . $classname . $type,
            'name'              => ($type == 'Fieldset' ? 'fieldset' : '') . str_replace('\\', '', $classname),
            'useHydrator'       => $form->get('useHydrator')->getValue(),
            'generateTrait'     => $form->get('generateTrait')->getValue(),
            'generateInterface' => $form->get('generateInterface')->getValue(),
            'generateFactory'   => $form->get('generateFactory')->getValue(),
            'useGetter'         => $form->get('useGetter')->getValue(),
        ], [
            'Class' => [
                'template'   => 'OseForm',
                'useSubForm' => false !== strpos($classname, '\\'),
            ],
        ]);
    
        ?>
    
        <h3>Etape 2 : Création des fichiers sources du formulaire</h3>
        <?php
        $sCodeGenerator->generateFiles($params);
    
        ?>
        <div class="alert alert-info">Les fichiers sont récupérables dans le
            dossier <?= $sCodeGenerator->getOutputDir() ?></div>
    
        <h3>Etape 3 : Déclaration dans le fichier de configuration</h3>
        <?php $sCodeGenerator->generateFile($params['Config'], false); ?>
        <div class="alert alert-warning">
            Vous devez vous-même placer ces informations dans le fichier de configuration de votre
            module.
        </div>
    
        <?php
    }