Bonjour,

J'ai fait de multiple recherches sur Google et dans le cookbook, mais je ne trouve aucune solution qui me convienne.
Actuellement j'ai plusieurs form templates dans mon dossier config (du style cleanForm.php, pillsForm.php, inlineForm.php...).
Chaque fichier fait un simple return (qui renvoi donc un tableau contenant les éléments personnalisé)
Puis dans AppView.php ou dans une vue je spécifie le template à utiliser : 'templates' => 'cleanForm'.
Il s'agit donc de la méthode expliqué dans le cookbook: http://book.cakephp.org/3.0/fr/views/helpers/form.html#personnaliser-les-templates-que-formhelper-utilise

Je souhaiterais pour une raison d'organisation placer tous mes templates dans un fichier config/ form_templates.php du style:

return = [
'Templates' => [
    'cleanForm' => [
         //all custom templates...
    ],
    'fullForm' => [
         //all custom templates...
    ],
    'inlineForm' => [
        //all custom templates...
    ]
    'checkPills' => [
        'checkboxWrapper' => '<div class="check-pills">{{label}}</div>',
        'nestingLabel' => '{{hidden}}{{input}}<label{{attrs}}>{{text}}</label>',
    ]
]];

Le problème c'est que maintenant je ne sais pas comment spécifier le template à utiliser car je ne peux plus spécifier simplement le nom du fichier. Il faut que je parcour le tableau.

Quelqu'un a-t-il une idée ? Ou doit-je me resoudre à avoir plusieur fichiers dans mon dossier config ?
Merci pour votre aide

4 réponses


Daniel68
Auteur

Pour le moment la seul solution que j'ai trouvé pour mon problème est celle-ci:

//Dans bootstrap.php
Configure::write('templates', [
        'cleanForm' => [... ],
        'full_form' => [...],
        'inlineForm' => [ ... ]
]);

// Puis dans AppView.php ou un fichier de vue pour un input je fais :
'templates' => Configure::read('templates.NomDuTemplateACharger'),

Mais je reste perplexe. Cela est-il une façon "correcte" d'utliser le bootstrap et charger les templates. N'y a-t-il pas moyen de faire ça de manière plus conventionnelle ?
Merci pour vos avis.

Je ne crois pas que le changement de template soit prévu. Tu as regardé si il n'y avait pas une option dans la méthode open() ?

Hello,
C'est impossible à faire pour le moment.
Tu as 2 solutions (que tu connais déjà):

  • Un fichier par template (Ce que j'utilise)
  • Utiliser le système de Configuration (Comme dans ton second post)

Au pire tu peut te créer un dossier config/Templates et tout mettre dedans. Puis spécifier 'templates' => 'Templates/app_form'. J'ai pas testé mais je pense que sa devrais fonctionner.

Daniel68
Auteur

Merci Grafikart et Xeta pour vos réponses.
Mis à part les templates je me rend compte que j'ai besoin de modifier plusieurs comportements du formHelper. Je suis donc parti sur une réécriture du helper pour le faire correspondre à mes besoins.