globetrotter Posted April 9, 2021 Share Posted April 9, 2021 Bonjour à tous, Voici mon problème: Je cherche à rajouter une colonne toute bête dans la liste des commandes depuis mon module 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 Link to comment Share on other sites More sharing options...
globetrotter Posted April 9, 2021 Author Share Posted April 9, 2021 Houra^^ Après quelques tentatives voici enfin la récompense. (colonne montest) 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. 1 Link to comment Share on other sites More sharing options...
natachaC Posted April 4, 2022 Share Posted April 4, 2022 Bonjour et merci ça m'a vraiment bien aider pour comprendre le nouveau fonctionnement Natacha Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now