Jump to content

Fields_list avec une requête SQL


Recommended Posts

Bonjour,

Je n'arrive pas à mettre une requête bien spécifique pour mon fields_list. En effet, il interroge ma table produit et non ma requête. Je ne trouve pas le moyen d'inverser la chose.

Voici mon code

 public function __construct(){

        $this->bootstrap = true;
        $this->table = 'product'; //Ici on retrouve la table ps_product_lang
        $this->lang = true;
        $this->version = '1.0';

        parent::__construct();

        $sql = 'SELECT m.name nameM, p.id_product, pl.name FROM ps_product_lang pl, ps_product p, ps_manufacturer m WHERE pl.id_product = p.id_product AND p.id_manufacturer = m.id_manufacturer ORDER BY id_product'; // Ici ma requête sql permettant d'interroger 3 tables différentes

        $result = Db::getInstance()->ExecuteS($sql);

        //Et ici l'affichage avec le fields_list.
        $this->fields_list = array(
            'name' => array(
                'title' => $this->trans('Recherche du produit')
            ),
            'nameM' => array(
                'title' => $this->trans('Marque du produit')
            ),
            'id_product' => array(
                'title' => $this->trans('ID'),
                'align' => 'center',
                'class' => 'fixed-width-xs'
            )
        );

    }

 

Merci d'avance pour vos réponse.

Link to comment
Share on other sites

Bonjour,

Le HelperList n'est pas conçu pour fonctionner dans une classe Module mais dans un AdminController.

Donc vous devriez utiliser un ModuleAdminController pour l'utiliser proprement, profiter de la pagination, sortings, search filters...

Quel est votre besoin précis ? S'agit-il juste d'ajouter une colonne Marque dans la liste des produits ?

Lectures sur le sujet :

https://www.prestashop.com/forums/topic/985383-helperlist-filter-not-working/?tab=comments#comment-3112884

https://www.prestashop.com/forums/topic/628043-paginado-en-helperlist/?tab=comments#comment-3111458

et autres sujets sur le forum, la recherche du forum est votre ami.

 

Edited by Janett (see edit history)
Link to comment
Share on other sites

Je ne comprends pas ce que je dois voir. J'ai essayé de détailler les éléments de ce module mais je ne trouve pas ce que je recherche.

Pour ajouter une colonne dans le fields_list j'ai réussi à faire cela

$this->_select .= 'm.`name` AS name_m, b.`name` AS name_p';
        $this->_join = ' LEFT JOIN `ps_manufacturer` AS m ON a.`id_manufacturer` = m.`id_manufacturer`';

        $name_p = 'name_p';
        $name_m = 'name_m';

        //a = ps_product
        //b = ps_product_lang


        //checkbox permettant de faire des actions groupés
        $this->bulk_actions = array(
            'edit' => array(
                'text' => 'Modifier la selection'
                
            )
        );


        //Les trois barres de recherche se situant en haut de la page
        $this->fields_list = array(
            //Nom des produits
            $name_p => array(
                'title' => 'Recherche du produit'
                //'filter_key' => 'name'
            ),
            //Marque des produits
            $name_m => array(
                'title' => 'Marque du produit'
                
            ),
            //Id des produits
            'id_product' => array(
                'title' => 'ID',
                'align' => 'center',
                'class' => 'fixed-width-xs'
            )
        );

 

La colonne "marque" se rajoute bien et est bien en liens avec les id ou bien les noms. Mais la recherche ne fonctionne pas, je ne peux pas effectuer de recherche via une marque. J'ai un message d'erreur qui s'affiche :  "Champ 'name_m' inconnu dans where clause" 

 

Merci d'avance pour votre aide.

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