Jump to content

Création de module : utilisation fields_form


Recommended Posts

Bonjour,

 

Je suis en train de dévélopper un module sous prestashop 1.5.x.

Je me pose cependant une question quant à l'utilisation de fields_form.

 

Très pratique, il permet de généré dynamiquement son formulaire mais j'aimerais pouvoir sortir de ces sentiers battus et ...concaténé / fusionner un champ personnalisé.

 

exemple tiré de l'exellent tuto de prestarocket :

$this->fields_form = array(
'legend' => array(
'title' => $this->l('Settings'),
),
'input' => array(
array(
'type' => 'select',
'label' => $this->l('Customer'),
'name' => 'id_customer',
'required' => true,
'options' => array(
'query' => Customer::getCustomers(),
'id' => 'id_customer',
'name'=>'lastname'
)
),
array(
'type' => 'select',
'label' => $this->l('Opinion'),
'name' => 'opinion',
'required' => true,
'options' => array(
'query' => array(
array(
'id' => 'Average',
'name' => $this->l('Average')
),
array(
'id' => 'Good',
'name' => $this->l('Good')
),
array(
'id' => 'Very Good',
'name' => $this->l('Very Good')
),
),
'id' => 'id',
'name' => 'name'
)
),
array(
'type' => 'radio',
'label' => $this->l('Active'),
'name' => 'active',
'required' => true,
'class' => 't',
'br' => true,
'values' => array(
array(
'id' => '0',
'value' => 0,
'label' => $this->l('No')
),
array(
'id' => '1',
'value' => 1,
'label' => $this->l('Yes')
)
)
)
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'button'
)
);

[..]

return parent::renderForm()

 

Je souhaite pour ma part rajouter un champ de type 'text' qui fait appel à une requete ajax pour lister les produits selon les caractères que tapent l'utilisateur.

 

j'ai donc créer une fonction qui me génère ce champ input : renderProductInput().

Elle crée simplement de l'html avec un champ input et une div html où iront se placer les produits sélectionnés

 

j'ai pensé concaténer parent::renderForm() avec ma fonction comme suit :

 

return parent::renderForm().$this->renderProductInput();

 

L'affichage est correct.. mais le champ input est en dehors de labalise <form> générer par renderForm.. logique en soit. Et les informations ne sont donc pas remonté pour leur traitement.

 

 

Ma question est donc : comment faire pour créer un champ input "particulier" à l'intérieur de fields_form? si il en existe un mise à part passer par un override complet.

 

Merci de votre aide !

Link to comment
Share on other sites

Bonjour,

 

Dans le fields_list ont peut ajouter un callback il faut essayer de voir si ça marche avec fields_form

 

<?php
$this->fields_form = array(
'legend' => array(
 'title' => $this->l('Settings'),
),
'input' => array(
 array(
  'type' => 'select',
  'label' => $this->l('Customer'),
  'name' => 'id_customer',
  'required' => true,
  'options' => array(
  'query' => Customer::getCustomers(),
  'id' => 'id_customer',
  'name'=>'lastname',
  'callback' => 'renderProductInput'
 )
........

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...