Toutes les clefs pour réussir dans le e-commerce

Mes modules Prestashop

Comment créer un helper sous prestashop

Si vous développez des modules pour prestashop et que vos modules génèrent et utilisent des onglets vous avez sans doute dû être étonné de voir qu’aucun helper n’existe pour créer des checkbox.
C’est à mon avis un oubli de la team Ps, mais on va y remédier. Au passage vous allez en plus apprendre comment créer un helper ce qui vous permettra à l’avenir de créer des formulaires avancés pour vos modules.

Avant toute chose je vous invite à bien lire la documentation officielle de Prestashop sur la création de module.
Pour exemple j’ai pris mon module gratuit OpartProductVideo dont voici la structure:

Tous les dossiers ou fichiers ici ne sont pas nécessaires, ce qu’il faut regarder c’est la structure au niveau des templates.

/*** EDIT ***/
Suite à l’intervention de smorillon (merci à lui), j’ai corrigé mon code qui, même s’il fonctionnait, ne respectait pas les bonnes pratiques de développement.

On va commencer par le fichier “AdminOpartproductvideoController.php” c’est celui qui gère l’affichage du contenu de mon onglet.
Dans la fonction “renderForm” vous devez avoir ce type de code:


public function renderForm()
{
if (!($obj = $this->loadObject(true)))
return;

$this->fields_form = array(
'legend' => array(
'title' => $this->l('Video'),
'image' => '../img/admin/cog.gif',
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Title:'),
'name' => 'title',
'size' => 50,
'desc' => $this->l('The title is used only in admin')
),
array(
'type' => 'text',
'label' => $this->l('Width:'),
'name' => 'width',
'size' => 10
),
array(
'type' => 'text',
'label' => $this->l('Height:'),
'name' => 'height',
'size' => 10
),
array(
'type' => 'text',
'lang' => true,
'autoload_rte' => true,
'label' => $this->l('Link:'),
'name' => 'link',
'size' => 150,
'desc' => $this->l('Copy the video url here. You can use youtube, dailymotion and wimeo video')
),
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'button'
)
);
return parent::renderForm();
}

Pour que l’helper soit appelé par cette fonction il faut ajouter le code suivant:


'checkbox' => array(
'label'=>'show on all page',
'name'=>'displayAll',
'id'=>'id',
'desc' => $this->l('demo desc')
),

ce qui vous donne:


public function renderForm()
{
if (!($obj = $this->loadObject(true)))
return;

$this->fields_form = array(
'legend' => array(
'title' => $this->l('Video'),
'image' => '../img/admin/cog.gif',
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Title:'),
'name' => 'title',
'size' => 50,
'desc' => $this->l('The title is used only in admin')
),
array(
'type' => 'text',
'label' => $this->l('Width:'),
'name' => 'width',
'size' => 10
),
array(
'type' => 'text',
'label' => $this->l('Height:'),
'name' => 'height',
'size' => 10
),
array(
'type' => 'text',
'lang' => true,
'autoload_rte' => true,
'label' => $this->l('Link:'),
'name' => 'link',
'size' => 150,
'desc' => $this->l('Copy the video url here. You can use youtube, dailymotion and wimeo video')
),
array(
'type' => 'checkbox',
'label' => $this->l('show on all page:'),
'name' => 'displayAll',
'id'=>'id',
'desc' => $this->l('demo desc')
)
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'button'
)
);
return parent::renderForm();
}

Ensuite il faut créer le fichier form.tpl en respectant bien l’architecture indiquée plus haut.
C’est à dire “views/templates/admin/nomdevotremodule/helpers/form/form.tpl”.

Placez-y le code suivant:


{extends file="helpers/form/form.tpl"}
{block name="input"}
{if $input.type=='checkbox'}
<input type="checkbox" name="{$input.name}" id="{$input.id}" value="" class="">
{else}
{$smarty.block.parent}
{/if}
{/block}

voila, désormais vous verrez une belle checkbox comme celle-ci:

/*** EDIT 2 ***/
Toujours grâce à Smorillon voici comment utiliser l’helper original (qui finalement existe) de prestashop:


array(
'type' => 'checkbox',
'name' => 'displayAll',
'values' => array(
'query' => array(
array(
'id' => 'on',
'name' => $this->l('show on all page'),
'val' => '1'
),
),
'id' => 'id',
'name' => 'name'
)
),

Poster un Commentaire

1 Commentaire sur "Comment créer un helper sous prestashop"

Recevoir un email pour
avatar
Trier par:   plus récent | plus vieux | Plus de vote
SMorillon
Invité

Bonjour,

Désolé mais la méthode que vous indiquez n’est pas à suivre…

Plus de détails en réponse à votre post sur le forum de Prestashop.

Bonne journée.

wpDiscuz