Jump to content

Nouvelle colonne dans AdminOrders - Hook


Recommended Posts

Bonjour à tous,

Voici mon problème:

Je cherche à rajouter une colonne toute bête dans la liste des commandes depuis mon module

Commandes.thumb.png.e495bd14f8438321b1b0d7b95087d582.png

Je ne veux pas faire d'override mais je souhaiterai utiliser un hook. Je précise que je ne suis pas encore à l'aise avec les hooks.

J'ai trouvé pas mal de tutos mais ,évidemment, rien ne fonctionne avec la dernière version de presta.... la doc est assez dense et bordélique (notamment sur les hooks)

J'ai trouvé ceci :

public function hookActionAdminOrdersListingFieldsModifier($params)
{
    $params['fields']['your_new_field'] = array(
        'title' => $this->l('label'),
        'align' => 'center',
    );
}

Il y a bcp de tutos mais qui reviennent à utiliser ce hook...

mais à priori il ne fonctionne plus avec la 1.7.7.3 ou alors je l'intègre mal.

Quelqu'un aurait il la gentillesse de m'aiguiller vers un autre hook ?

Autre question y a t'il un moyen de check si mon hook est bien chargé ?

Et d'après ce que j'ai pu lire un peu partout, que va t'il advenir des overrides à l'avenir?  Certains disent qu'ils sont voués à  disparaitre

Info ou intox?

merci à tous pour votre aide

Share this post


Link to post
Share on other sites

Houra^^

Après quelques tentatives voici enfin la récompense. (colonne montest)

1837523523_FireShotCapture004.thumb.png.0b4eb0b9bb7a70646b6e5152bf6c2a69.png

 

Je partage la solution pour celles et ceux qui seraient interreressés. JE precise bien que j'utilise la version 1.7.7.3

1) avoir la colonne correspondante dans la table (evidemment...)

2) J'ai utilisé 2 nouveaux hook 

hookActionOrderGridDefinitionModifier => pour modifier le tableau

hookActionOrderGridQueryBuilderModifier => pour modifer la requete et prendre en compte le filtre

 

public function hookActionOrderGridDefinitionModifier(array $params)
    {
        /** @var GridDefinitionInterface $definition */
        $definition = $params['definition'];

        /** @var FilterCollection $filters */
        $filters = $definition->getFilters();

        /** @var ColumnCollection */
        $columns = $definition->getColumns();

        $columns
            ->addAfter('id_order',
                (new DataColumn('montest'))
                    ->setName($this->l('Montest'))
                    ->setOptions([
                        'field' => 'montest',
                    ])
            );
        $filters
            ->add((new Filter('montest', TextType::class))
                ->setTypeOptions([
                    'required' => false,
                    'attr' => [
                        'placeholder' => $this->trans('Search ID', [], 'Admin.Actions'),
                    ],
                ])
                ->setAssociatedColumn('montest'));

    }

JE vais pas trop commenter le code parle de lui-même .

LE hook pour modifier la requête

public function hookActionOrderGridQueryBuilderModifier(array $params)
    {

        $searchQueryBuilder = $params['search_query_builder'];
        /** @var CustomerFilters $searchCriteria */
         $searchCriteria = $params['search_criteria'];
        foreach ($searchCriteria->getFilters() as $filterName => $filterValue) {
            if ('montest' === $filterName && $filterValue) {
                $searchQueryBuilder
                    ->where('o.`montest` = \'' . $filterValue . '\'')
                    ->orWhere('o.`montest` LIKE "%'.$filterValue.'%"');
                $searchQueryBuilder->setParameter(':s', $filterValue);
            }
        }

        $searchQueryBuilder->addSelect('o.montest');

    }

Ce hook m'a demander un peu plus de recherche car  les infos ne se partagent pas de trop encore. Certainement trop récent. 

Voilou++

Have fun.

  • Like 1

Share this post


Link to post
Share on other sites

  • 11 months later...

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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More