Bug FormBuilder sur les catégories CMS

Module Prestashop 1.7 personnalisé

a marqué ce sujet comme résolu.

Bonjour à tous,

J’ai codé un module Prestashop y’a quelques semaines pour ajouter deux nouveaux champs dans la partie CMS du backoffice (pages et catégories).

Voici la partie du code source incriminé :

<?php
class NewsSlider extends Module {
    private function showCustomFormBuilder ($params, $isCategory=false) {
        $formBuilder = $params['form_builder'];
        $locales = $this->get('prestashop.adapter.legacy.context')->getLanguages();

        $formBuilder->add($this->name.'_cover_lang',
            \PrestaShopBundle\Form\Admin\Type\TranslatableType::class,
            [
                'type' => \Symfony\Component\Form\Extension\Core\Type\FileType::class,
                'label' => $this->l('Image de couverture'),
                'options' => [
                    'required' => false,
                    'constraints' => [
                        'mimeTypes' => [
                            'image/png',
                            'image/jpeg'
                        ],
                        'mimeTypesMessage' => 'JPEG/PNG',
                    ]
                ],
                'required' => false,
            ]
        );

        $formBuilder->add($this->name.'_header_lang',
            \PrestaShopBundle\Form\Admin\Type\TranslateType::class,
            [
                'type' => \PrestaShopBundle\Form\Admin\Type\FormattedTextareaType::class,
                'label' => $this->l('Entête de la page'),
                'locales' => $locales,
                'hideTabs' => false,
                'required' => false
            ]
        );

        $languages = Language::getLanguages(true);
        foreach($languages as $lang){
            $content = $this->getCMSHeader($params['id'], $lang['id_lang'], $isCategory);
            if(is_string($content) && strlen($content)) {
                $params['data'][$this->name.'_header_lang'][$lang['id_lang']] = $content;
            }
        }

        $formBuilder->setData($params['data']);
    }

    public function hookActionCmsPageFormBuilderModifier(array $params) {
        $this->showCustomFormBuilder($params);
    }

    public function hookActionCmsPageCategoryFormBuilderModifier(array $params) {
        $this->showCustomFormBuilder($params, true);
    }
}
?>

Pour les pages, ça s’affiche correctement.

En revanche pour les catégories c’est une autre affaire :

Page CMS catégorie
Page CMS catégorie

En examinant le DOM, on voit très clairement que les champs sont insérés dans l’élément supérieur qui englobe la page et pas dans l’encart blanc du formulaire.

J’ai tenté de retrouver le template d’affichage de Prestashop, sauf que le formulaire est généré automatiquement par le form builder de Symfony …

Avez-vous une idée ? Une piste. :)

Merci d’avance et surtout prenez soin de vous.

Edit : la question a également été posté sur StackOverflow.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte