Jump to content

Helperlist Et Position - 1.6


Recommended Posts

Alors avant toute chose, je précise que j'ai déjà recherché et que je n'ai pas trouvé de solution, je n'ouvre pas ce sujet par flemme.

 

Comme certains, j'essaie de faire apparaître dans mon tableau en admin, les flèches pour modifier mes positions directement (comme les catégories, par exemple).

 

J'ai fouillé et j'ai trouvé un certain nombre de sujet, notamment sur ce forum, mais orienté pour Presta 1.5, et vu que je suis sur 1.6 et que ça ne marche pas, peut être y a-t-il des subtilités ou des différences que je n'ai pas trouvé.

 

Voici mon code :

        $helper = new HelperList();

        $helper->shopLinkType = '';

        $helper->actions = array('edit', 'delete', 'view');
        $helper->title = $this->l('Catégories');
        $helper->token = Tools::getValue('token');
        //$helper->currentIndex = AdminController::$currentIndex.'&configure=';
        $helper->_defaultOrderBy = 'position';
        
        $helper->explicitSelect = true;
        
        $fields_list = array(
            'id_category' => array(
                'title' => $this->l('ID'),
                'align' => 'text-center',
                'class' => 'fixed-width-xs',
                'orderby' => true,
                'havingFilter' => true,
                'tmpTableFilter' => true,

            ),
            'name' => array(
                'title' => $this->l('Name'),
            ),
            'position' => array(
                'title' => $this->l('Position'),
                'class' => 'fixed-width-xs',
                'position' => 'position',
                'align' => 'center'
            )
        );
        $categories = Db::getInstance()->ExecuteS('SELECT id_category, name, position
              /* etc */
        ');

        $this->content .= $helper->generateList($categories,$fields_list);

Du coup, je me retrouve avec mon tableau qui affiche les bonnes données, sauf les positions dont toutes les valeurs sont incrémentées par rapport à la base de donnée.

 

J'utilise cette méthode et pas celle déjà présente de base dans le constructeur, parce que je voudrais afficher deux tableaux sur la même pas (et j'y arrive) et que c'est le seul moyen que j'ai trouvé. Mais du coup, mon tri ne marche pas...

 

Il manque quelque chose ? Mauvaise syntaxe ? Eléments dans le désordre ?

 

Link to comment
Share on other sites

J'ai trouvé une première étape de réponse : il manquait

        $helper->orderBy = 'position';
        $helper->orderWay = 'asc';

dans la déclaration, du coup le tableau a la bonne forme.

 

Par contre :

Je ne peux toujours pas déplacer les lignes, et les les valeurs affichées des positions sont toujours égales à celles de la base +1. Donc il doit encore manquer quelque chose...

 

Edit : après première recherche, les lignes du tableau généré par mon Helper n'ont pas d'ID. Reste à trouver d'où ça vient.

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

En fait j'ai avancé d'une étape entretemps :D J'ai réussi à afficher le tableau correctement et à bouger les lignes, par contre, les modifications ne sont pas enregistrées dans la base. Je bosse là dessus pour le moment. Mais merci pour le lien !

Ah oui, j'ai toujours les positions +1 dans mon tableau. Ca dit rien à personne ?

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

Voilà, c'est résolu.

 

Le problème, quand on avance en récupérant des bouts de code à gauche et à droite, sans avoir la démarche complète, c'est que des fois on rate des trucs. Il me manquait donc une méthode ajaxProcessUpdatePositions dans mon adminTab, et du coup les méthodes updatePosition et cleanPosition dans ma classe.

 

Du coup, pour les positions qui sont trop incrémentées, en fait c'est normal : j'avais rentré des valeurs à la main dans la base pour bosser sur mon tableau, et j'avais fait commencer les ordres à 1 au lieu de 0. Du coup, cleanPosition me les a remis d'équerre.

 

Voilà, ça marche maintenant, et il semblerait même que ça le fasse à chaque fois.

 

A bientôt pour le prochain épisode de mes questions de fou :D

  • Like 1
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...