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 :
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