Jump to content

Edit History

Allyta

Allyta

Bonjour,

Je suis en train de faire un module avec formulaires CRUD, listes, etc...
Vu que c'est un module à destination de mon entreprise, je le fais en français donc je n'ai pas de table_lang.
Le souci c'est que mon bulk pour l'action delete cherche toujours la table_lang pour supprimer le contenu d'une ligne.

Est-ce je peux changer la requête DELETE dans une fonction dans mon controller où j'appelle mon RowAction('delete') ? (Si oui, quelle forme a-t-elle ? PostProcess ?)
ou sinon
Est-ce que je peux dupliquer le RowAction('delete') et changer sa requête DELETE dans son fichier d'initialisation ? (Si oui, quel est le nom du fichier où il est mis en place ? Mon IDE me propose 110 fichiers avec des RowActions...)

Si ma question n'était pas claire :
Erreur
La table 'bdd.ps_reception_lang' n'existe pas<br /><br /><pre>SELECT * FROM `ps_reception_lang` WHERE `id_reception` = 541</pre>
at line 769 in file classes/db/Db.php

<?php 
include '../modules/gestionProduction/classes/Ingredient.php';
include '../modules/gestionProduction/classes/Fournisseur.php';
include '../modules/gestionProduction/classes/Reception.php';
include '../modules/gestionProduction/classes/Transporteur.php';
include '../modules/gestionProduction/classes/Unite.php';


class AdminGestionReceptionController extends ModuleAdminController{
    
  // Instanciation de la classe
  public function __construct(){

    $this->bootstrap = true; //Gestion de l'affichage en mode bootstrap
    $this->table = 'gp_reception'; //Table de l'objet
    $this->identifier = 'id_reception'; //Clé primaire de l'objet
    $this->className = Reception::class; //Classe de l'objet
    $this->lang = false; // <= Je précise bien pas de lang

         
    //Liste des champs de l'objet à afficher dans la liste
    $this->fields_list = array(
      'date_reception' => array('title' => 'Date', 'width' => 'auto', 'remove_onclick' => true),
      'ingredient_reception' => array('title' => 'Ingrédient', 'width' => 'auto', 'remove_onclick' => true), 
      'fournisseur_reception' => array('title' => 'Fournisseur', 'width' => 'auto', 'remove_onclick' => true),
      'ingredient_quantite' => array('title' => 'Quantité', 'width' => 'auto', 'remove_onclick' => true),
      'num_lot_fournisseur_reception' => array('title' => 'Num lot fournisseur', 'width' => 'auto', 'remove_onclick' => true),
      'num_lot_reception' => array('title' => 'Num lot', 'width' => 'auto', 'remove_onclick' => true),
      'quantite_conforme_reception' => array('title' => 'Conformité', 'width' => 'auto', 'remove_onclick' => true),
      'integrite_reception' => array('title' => 'Intégrité', 'width' => 'auto', 'remove_onclick' => true),
    );

    //Ajout d'actions sur chaque ligne
    //$this->addRowAction('view');
    $this->addRowAction('edit');
    $this->addRowAction('delete');
        
    parent::__construct();
  }
 
  /** 
  * Récupération et stockage des données après validation du formulaire
  */
  public function postProcess(){
    if (Tools::isSubmit('validerAjoutReception')) {        
      //On récupère les données entrées dans le formulaire d'ajout
      //Insertion des données dans la BDD
 	 }
      //Redirection vers la liste 
      $this->redirect_after = Context::getContext()->link->getAdminLink('AdminGestionReception', true);

      parent::postProcess();
    } 
    elseif (Tools::isSubmit('delete' . $this->table)) {
      if (!($obj = $this->loadObject(true))) {
        return;
      } else {
        //Suppression de la réception
       Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'gp_reception` WHERE `id_reception`=' . (int) $obj->id);

        return parent::postProcess();
      }
    } else {
      return parent::postProcess();
    }
  }
}

Merci 😃

Allyta

Allyta

Bonjour,

Je suis en train de faire un module avec formulaires CRUD, listes, etc...
Vu que c'est un module à destination de mon entreprise, je le fais en français donc je n'ai pas de table_lang.
Le souci c'est que mon bulk pour l'action delete cherche toujours la table_lang pour supprimer le contenu d'une ligne.

Est-ce je peux changer la requête DELETE dans une fonction dans mon controller où j'appelle mon RowAction('delete') ? (Si oui, quelle forme a-t-elle ? PostProcess ?)
ou sinon
Est-ce que je peux dupliquer le RowAction('delete') et changer sa requête DELETE dans son fichier d'initialisation ? (Si oui, quel est le nom du fichier où il est mis en place ? Mon IDE me propose 110 fichiers avec des RowActions...)

Si ma question n'était pas claire :
Erreur
La table 'bdd.ps_reception_lang' n'existe pas<br /><br /><pre>SELECT * FROM `ps_reception_lang` WHERE `id_reception` = 541</pre>
at line 769 in file classes/db/Db.php

<?php 
include '../modules/gestionProduction/classes/Ingredient.php';
include '../modules/gestionProduction/classes/Fournisseur.php';
include '../modules/gestionProduction/classes/Reception.php';
include '../modules/gestionProduction/classes/Transporteur.php';
include '../modules/gestionProduction/classes/Unite.php';


class AdminGestionReceptionController extends ModuleAdminController{
    
  // Instanciation de la classe
  public function __construct(){

    $this->bootstrap = true; //Gestion de l'affichage en mode bootstrap
    $this->table = 'gp_reception'; //Table de l'objet
    $this->identifier = 'id_reception'; //Clé primaire de l'objet
    $this->className = Reception::class; //Classe de l'objet
    $this->lang = false; // <= Je précise bien pas de lang

         
    //Liste des champs de l'objet à afficher dans la liste
    $this->fields_list = array(
      'date_reception' => array('title' => 'Date', 'width' => 'auto', 'remove_onclick' => true),
      'ingredient_reception' => array('title' => 'Ingrédient', 'width' => 'auto', 'remove_onclick' => true), 
      'fournisseur_reception' => array('title' => 'Fournisseur', 'width' => 'auto', 'remove_onclick' => true),
      'ingredient_quantite' => array('title' => 'Quantité', 'width' => 'auto', 'remove_onclick' => true),
      'num_lot_fournisseur_reception' => array('title' => 'Num lot fournisseur', 'width' => 'auto', 'remove_onclick' => true),
      'num_lot_reception' => array('title' => 'Num lot', 'width' => 'auto', 'remove_onclick' => true),
      'quantite_conforme_reception' => array('title' => 'Conformité', 'width' => 'auto', 'remove_onclick' => true),
      'integrite_reception' => array('title' => 'Intégrité', 'width' => 'auto', 'remove_onclick' => true),
    );

    //Ajout d'actions sur chaque ligne
    //$this->addRowAction('view');
    $this->addRowAction('edit');
    $this->addRowAction('delete');
        
    parent::__construct();
  }
 
  /** 
  * Récupération et stockage des données après validation du formulaire
  */
  public function postProcess(){
    if (Tools::isSubmit('validerAjoutReception')) {        
      //On récupère les données entrées dans le formulaire d'ajout
      //Insertion des données dans la BDD
 	 }
      //Redirection vers la liste 
      $this->redirect_after = Context::getContext()->link->getAdminLink('AdminGestionReception', true);

      parent::postProcess();
    } 
    elseif (Tools::isSubmit('delete' . $this->table)) {
      if (!($obj = $this->loadObject(true))) {
        return;
      } else {
        //Suppression de la réception
       Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'gp_reception` WHERE `id_reception`=' . (int) $obj->id);

        return parent::postProcess();
      }
    } else {
      return parent::postProcess();
    }
  }
}

Merci 😃

×
×
  • Create New...