Jump to content

[RESOLU] Problème AdminController Module Perso


Recommended Posts

Bonjour 

 

Je créer actuellement un module pour proposer un devis, un simple formulaire qui s'enregistre en bdd.

 

Dans l'administration j’essaye de lister la table azw_custom_devis dans un tableau mais cela me renvoi une erreur que je n'arrive pas à comprendre.

 

Voici le Controller d'administration

<?php

class AdminDevisController extends ModuleAdminController {
 
    public function __construct() {
 
        $this->table 	= 'azw_custom_devis';
        $this->className 	= 'Devis';
		$this->bootstrap = true;
 
        parent :: __construct();
 
		$this->fields_list = array(
			'id_devis' => array(
				'title' 	=> '#' 
			), 
			'name_customer' => array(
				'title' 	=> $this->module->l('Nom')
			),
			'surname_customer' => array(
				'title' 	=> $this->module->l('Prenom')
			),
			'mail' => array(
				'title' 	=> $this->module->l('Mail')
			),
			'text_devis' => array(
				'title' 	=> $this->module->l('Demande')
			), 
			'vous_etes' => array(
				'title' 	=> $this->module->l('Etat')
			)
		);
		
		$this->actions = array('delete');
		
	}

et l'erreur qu'il retourne

Champ 'a.id_azw_custom_devis' inconnu dans order clause


SELECT SQL_CALC_FOUND_ROWS
								 a.*
			
			FROM `ps_azw_custom_devis` a 
			
			
			 WHERE 1  
			
			 ORDER BY a.`id_azw_custom_devis` ASC  LIMIT 0, 50

Je rajoute aussi la structure des tables au cas ou

CREATE TABLE IF NOT EXISTS `prestaone`.`ps_azw_custom_devis` (
  `id_devis` INT NOT NULL AUTO_INCREMENT,
  `name_customer` VARCHAR(45) NOT NULL,
  `surname_customer` VARCHAR(45) NOT NULL,
  `mail` VARCHAR(128) CHARACTER SET 'utf8' NOT NULL,
  `text_devis` LONGTEXT NULL,
  `vous_etes` INT NULL,
  PRIMARY KEY (`id_devis`))
ENGINE = InnoDB;
Edited by AlexanderOs (see edit history)
Link to comment
Share on other sites

Bon, alors je traduis en français son script:

 

Sélectionner (et compter) TOUT CE QUE JE TROUVE dans la table ps_azw_custom_devis et trier suivant la valeur de `id_azw_custom_devis`

 

Vu que cette colonne n'existe pas, difficile de trier quoique ce soit.

 

Pour moi, la demande est quand même explicite, non ?

Link to comment
Share on other sites

A moins que je n'ai loupé des posts, il a écrit ça:

$this->table     = 'azw_custom_devis';
$this->className     = 'Devis';
$this->bootstrap = true;
parent :: __construct();
$this->fields_list = array(
            'id_devis' => array(
                'title'     => '#'
            ),
            'name_customer' => array(
                'title'     => $this->module->l('Nom')
            ),
            'surname_customer' => array(
                'title'     => $this->module->l('Prenom')
            ),
            'mail' => array(
                'title'     => $this->module->l('Mail')
            ),
            'text_devis' => array(
                'title'     => $this->module->l('Demande')
            ),
            'vous_etes' => array(
                'title'     => $this->module->l('Etat')
            )
);
$this->actions = array('delete');

Je ne vois pas trace de id_azw_custom_devis.

 

Mais on est bien d'accord, la requête sous-jacente formée par je ne sais quel Helper suppose son existence et l'utilise pour le tri.

Link to comment
Share on other sites

Bon, il faut savoir de quoi on parle et ce qu'on fait.

SI on utilise les helpers sans paramètres précis, prestashop utilise ses valeurs par defaut.

 

L'objectModel et PrestashopCollection recherchent donc la colonne primaire dans la table

if (!isset($current_def['field'])) {
                $current_def['field'] = 'id_'.$asso;

Donc par défaut: id_'.$this->table.'

 

Si on décide d'utiliser des outils, il faut en comprendre le fonctionnement^^

  • Like 1
Link to comment
Share on other sites

J'aime... ta mauvaise foi... et j'essaye modestement de la partager ;-)

 

Effectivement, et ta remarque s'applique à (presque) tous les posts de ce forum. Si tous les gens qui utilisent un outil savaient comment ils fonctionnent, ce forum n'aurait plus raison d'être, ni même http://aide.prestashop.click

 

C'est en sciant que Léonard de Vinci, et il lui est peut-être arrivé de se couper quelquefois.

Link to comment
Share on other sites

Je ne suis pas complètement d'accord.

Le forum est divisé en sections, par thèmes.

 

Je peux comprendre qu'un commerçant qui n'y connait rien en code, soit un peu dérouté dans les paramétrages plus ou moins subtils ou mystérieux de Prestashop.

Il peut également être confronté à un bug ou demander un développement spécifique.

L'utilité du forum est alors évidente dans ces cas là.

 

Ici, nous sommes dans la rubrique "Prestashop pour les développeurs", c'est autre chose.

Qui dit développeur, dit un minimum d'expérience dans le domaine et une connaissance des outils utilisés. Par expérience, j'ai rencontré beaucoup plus de bidouilleurs que de codeurs sur ce forum, certains mettant en péril leur boutique (ou pire, celles de leur clients).

 

Le premier réflexe, pour celui qui veut apprendre à coder avec Prestashop, est de lire le code existant pour le comprendre. (la doc est beaucoup trop succincte à ce niveau)

De nombreux posts expliquent la structure de base d'un module et ses interactions avec le core.

Evidemment que nous pouvons partager nos connaissances ou débloquer une situation, mais il faut qu'il y ait un minimum de recherche et de rigueur en face.

Link to comment
Share on other sites

Bon, il faut savoir de quoi on parle et ce qu'on fait.

SI on utilise les helpers sans paramètres précis, prestashop utilise ses valeurs par defaut.

 

L'objectModel et PrestashopCollection recherchent donc la colonne primaire dans la table

if (!isset($current_def['field'])) {
                $current_def['field'] = 'id_'.$asso;

Donc par défaut: id_'.$this->table.'

 

Si on décide d'utiliser des outils, il faut en comprendre le fonctionnement^^

 

 

Voila ma réponse !

 

 

 

Merci Eolia pour ce lynchage matinal !

 

Si je m’intéresse au développement sur Prestashop ou es que je doit poster se type de problème ?

 

Il va surement falloir ouvrir une section "Prestashop pour les bidouilleur ", heureusement je ne mais quand péril mon cerveau et mon localhost dans cette histoire.

 

Je repasserai quand j'aurai un peut plus de connaissances pour éviter ce genre de remarque Merci .

Link to comment
Share on other sites

@Eolia, Arguments entendus et acceptés. Mais effectivement, que se passerait-il si il y avait 2 rubriques: "PrestaShop pour les développeurs", et "PrestaShop pour les bidouilleurs"? Normalement on (j'ose me prendre pour un développeur) arrive rapidement à faire la différence...

 

@AlexanderOs, ne te fâche pas, il est un peu dur c'est vrai, mais si il n'était pas là...

 

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