NewOseForm.php 3.12 KB
Newer Older
1
2
3
4
5
6
<?php

use UnicaenCode\Form\ElementMaker;
use UnicaenCode\Util;

/**
7
 * @var $this       \Application\View\Renderer\PhpRenderer
8
9
 * @var $controller \Zend\Mvc\Controller\AbstractController
 * @var $viewName   string
10
 * @var $sl         \Zend\ServiceManager\ServiceLocatorInterface
11
12
 */

13

14
?>
15
    <h1>Création d'un nouveau formulaire</h1>
16
17
18
19
20
21
22
23
    <h3>Etape 1 : Paramétrage</h3>

<?php

$form = new \Zend\Form\Form();
$form->add(ElementMaker::selectModule(
    'module', 'Module dans lequel sera placé votre formulaire'
));
24
25
26
$form->add(ElementMaker::select(
    'type', 'Type de formulaire (Form ou Fieldset)', ['Form' => 'Form', 'Fieldset' => 'Fieldset'], 'Form'
));
27
28
29
30
31
32
$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'
));
33
34
35
36
37
38
$form->add(ElementMaker::checkbox(
    'generateTrait', 'Générer un trait', true
));
$form->add(ElementMaker::checkbox(
    'generateInterface', 'Générer une interface', false
));
39
40
41
42
43
44
$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
));
45
46
47
48
49
50
51
$form->add(ElementMaker::submit('generate', 'Générer le formulaire'));
$form->setData($controller->getRequest()->getPost());

Util::displayForm($form);

if ($controller->getRequest()->isPost() && $form->isValid()) {

52
53
    $type              = $form->get('type')->getValue();
    $classname         = $form->get('classname')->getValue();
54

55
    $sCodeGenerator = $sl->get('UnicaenCode\CodeGenerator');
56
57
    /* @var $sCodeGenerator \UnicaenCode\Service\CodeGenerator */

58
59
60
61
62
63
64
    $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(),
65
66
        'generateFactory'   => $form->get('generateFactory')->getValue(),
        'useGetter'         => $form->get('useGetter')->getValue(),
67
68
69
70
71
72
    ], [
        'Class' => [
            'template'   => 'OseForm',
            'useSubForm' => false !== strpos($classname, '\\'),
        ],
    ]);
73
74
75
76
77

    ?>

    <h3>Etape 2 : Création des fichiers sources du formulaire</h3>
    <?php
78
    $sCodeGenerator->generateFiles($params);
79
80
81

    ?>
    <div class="alert alert-info">Les fichiers sont récupérables dans le
82
        dossier <?= $sCodeGenerator->getOutputDir() ?></div>
83
84

    <h3>Etape 3 : Déclaration dans le fichier de configuration</h3>
85
    <?php $sCodeGenerator->generateFile($params['Config'], false); ?>
86
87
88
89
90
91
92
    <div class="alert alert-warning">
        Vous devez vous-même placer ces informations dans le fichier de configuration de votre
        module.
    </div>

    <?php
}