2016-02-04 1 views
0

Je crée un module prestashop pour mon entreprise. J'utilise des aides pour faire un travail propre. Le problème est avec mon renderForm! Lorsque j'essaie d'éditer une ligne, seul le champ id_product reçoit la valeur, pas les 3 autres .. Alors, je voudrais comprendre pourquoi?Problème Prestashop avec renderList

/* Constructeur */ 
public function __construct() 
{ 
    $this->bootstrap = true; 
    /* Pour aller chercher la table correspondante dans la base */ 
    $this->table = 'reverdy_aliments'; 
    $this->className = 'ReverdyPrices'; 
    $this->deleted = false; 

    $this->context = Context::getContext(); 
    /* Pour ajouter la checkbox à gauche */ 
    /*$this->bulk_actions = array(
     'delete' => array(
      'text' => $this->l('Delete selected'), 
      'confirm' => $this->l('Delete selected items?'), 
      'icon' => 'icon-trash' 
     ) 
    );*/ 

    /* Pour préciser que la clé primaire n'est pas 'id_'.$table */ 
    $this->identifier = 'id_product'; 

    parent::__construct(); 
} 

/* Pour ajouter les boutons */ 
public function renderList() 
{ 
    /* Boutons sur les lignes du tableau */ 
    $this->addRowAction('edit'); 

    /* Champs voulus dans le tableau */ 
    $this->fields_list = array(
     'id_product' => array(
      'title' => $this->l('Produit'), 
      'align' => 'center', 
      'callback' => 'getAlimentNameById' 
     ), 
     'departement' => array(
      'title' => $this->l('Département'), 
      'align' => 'center' 
     ), 
     'quantite_kg' => array(
      'title' => $this->l('Quantité'), 
      'align' => 'center' 
     ), 
     'prix_ht' => array(
      'title' => $this->l('Prix H.T.'), 
      'align' => 'center' 
     ) 
    ); 

    return parent::renderList(); 
} 

/* Pour récupérer directement le nom des produits */ 
public function getAlimentNameById($echo,$row) 
{ 
    $id_product = (int)$row['id_product']; 
    if($id_product){ 
     $produit = new Product($id_product); 
     return $produit->name[$this->context->language->id]; 
    } 
    return ""; 
} 

/* Pour le formulaire de modification */ 
public function renderForm() 
{ 
    if (!($obj = $this->loadObject(true))) 
     return; 

    $this->fields_form = array(
     'tinymce'=> false, 
     'legend' => array(
      'title' => $this->l('Produit'), 
      'icon' => 'icon-cogs', 
     ), 
     'input' => array(
      array(
       'type' => 'text', 
       'name' => 'id_product', 
       'label' => $this->l('Produit'), 
       'disabled' => true 
      ), 
      array(
       'type' => 'text', 
       'name' => 'departement', 
       'label' => $this->l('Département'), 
       'disabled' => true 
      ), 
      array(
       'type' => 'text', 
       'name' => 'quantite_kg', 
       'label' => $this->l('Quantité en kg'), 
       'disabled' => true 
      ), 
      array(
       'type' => 'text', 
       'name' => 'prix_ht', 
       'label' => $this->l('Prix H.T.') 
      ) 
     ), 
     'submit' => array(
      'title' => $this->l('Save'), 
      'name' => 'submitAdd'.$this->table 
     ) 
    ); 

    /*$this->fields_value = array('departement' => 'test'); 
    $this->fields_value['id_employee_default'] = $default_employee;*/ 

    return parent::renderForm(); 
} 
+0

Vous avez partagé pas un code complet (quel 'class' il' extends'?) Et de votre description ce n'est pas clair ce que vous cherchez: 'renderList' ou' renderForm'. De toute façon, vous devez passer vos variables à '$ this-> fields_list = array (...)' ou '$ this-> fields_value = array (...)'. –

+0

Salut, merci pour votre réponse! Ma classe est: 'class AdminReverdyPricesController extends ModuleAdminController' Et je cherche pourquoi quand je clique sur modifier sur un champ de la fields_list, je n'ai pas de valeurs dans les entrées .. –

+0

Je dois dire, j'ai déjà vu '$ this-> fields_value = array (...)' mais c'est juste si je veux une valeur par défaut non? Pour ce cas, je veux juste obtenir les valeurs de la ligne que je suis en train d'éditer. Est-ce que c'est assez clair? Désolé pour mon anglais.. –

Répondre

0

Nous avons vu avec Benoit que le problème était sur les ObjectModel « ReverdyPrices » wich on n'a pas été inclus dans le module avec un ou inclure un require_once.