Dav198314 Posted May 12, 2016 Share Posted May 12, 2016 Bonjour, Depuis la mise à jour en 1.6.1.5, dans le back-office, dans "Commandes" puis dans le filtrage quand on choisi les commandes du jour, on configure la date, et là le titre de la page m'affiche : Filtrer par Date : a:2:{i:0;s:10:"2016-05-12";i:1;s:10:"2016-05-12";} Quelqu'un a t'il le même problème ou une solution ? J'ai 2 sites sous prestashop 1.6.1.5 sur des serveurs différents, même problème. Je pense que tous les sites sur la 1.6.1.5 on le même problème ! et vous ? Merci d'avance ! 1 Link to comment Share on other sites More sharing options...
Thorfy Posted June 3, 2016 Share Posted June 3, 2016 (edited) Bonjour, Depuis la mise à jour en 1.6.1.5, dans le back-office, dans "Commandes" puis dans le filtrage quand on choisi les commandes du jour, on configure la date, et là le titre de la page m'affiche : Filtrer par Date : a:2:{i:0;s:10:"2016-05-12";i:1;s:10:"2016-05-12";} Quelqu'un a t'il le même problème ou une solution ? J'ai 2 sites sous prestashop 1.6.1.5 sur des serveurs différents, même problème. Je pense que tous les sites sur la 1.6.1.5 on le même problème ! et vous ? Merci d'avance ! Bonjour c'est peut etre un peut tard mais bon ^^ je donne toujours on ne sais jamais Tout d'abord j'ai fait deux version pour ce bug: La première le corrige simplement La seconde le corrige + convertit la date au format français (le format est Américain par défault) Vous devez accéder au fichier AdminController.php situé dans classes/controller/AdminController.php Je vous conseille fortement de faire un override avec se fichier. Pour se faire vous devez prendre une copie du fichier précédent, et le placer dans override/classes/controller/ Pour activer l'override vous devez supprimer le fichier class_index.php dans cache/class_index.php (ne vous en faite pas il se regénère au chargement d'une page prestashop; faite un backup si vous le souhaitez.) Revenons donc à notre AdminController.php Pour la première version le code à ajouter est à la ligne 660: $filter_value = ((bool)$val) ? $this->l('yes') : $this->l('no'); //code à ajouter à partir d'içi //fix problème d'affichage du filtre par date dans l'onglet commande } elseif (isset($t['type']) && $t['type'] == 'datetime') { $date = Tools::unSerialize($val); if (isset($date[0])) { $filter_value = $date[0]; if (isset($date[1]) && !empty($date[1])) { //assemblage des deux dates $filter_value .= ' - '.$date[1]; } } } //attention à cette accolade qui doit être posée sur le elseif { suivant et pour la seconde, pareil à ajouter dès la ligne 660 $filter_value = ((bool)$val) ? $this->l('yes') : $this->l('no'); //code à ajouter à partir d'içi //fix problème d'affichage du filtre par date dans l'onglet commande } elseif (isset($t['type']) && $t['type'] == 'datetime') { $date = Tools::unSerialize($val); if (isset($date[0])) { //transformation de la chaine de caractère en format date $s_filtredate1 = strtotime($date[0]); //convertion du format de date Americaine en format Français $filtredate1 = date('d/m/Y',$s_filtredate1); $filter_value = $filtredate1; if (isset($date[1]) && !empty($date[1])) { $s_filtredate2 = strtotime($date[1]); $filtredate2 = date('d/m/Y',$s_filtredate2); //assemblage des deux dates $filter_value .= ' - '.$filtredate2; } } } //attention à cette accolade qui doit être posée sur le elseif { suivant Voila donc pour ce fix. ils fonctionnent très bien sur la version 1.6.1.5 et je pense qu'ils seront durable d’Ici à se que les équipes de dev fix ce problème. Je n'ai pas rencontré pour l'instant de conflit avec un autre filtre par date, mais si vous en avez ne pas hésitez à me feedback tout cela. Bien Cordialement ^^ Rémy Lefebvre *edit* Vous pouvez et je dirais même devez surcharger votre class AdminControllerCore pour remplacer cette fonction plutôt que de overrider tout le fichier Edited June 3, 2016 by Thorfy (see edit history) Link to comment Share on other sites More sharing options...
Patrick Proot Posted June 4, 2016 Share Posted June 4, 2016 Merci pour cette solution, je crois qu'on est tous devant le même problème en version 1.6.1.5 Qu'entendez vous par "surcharger votre class AdminControllerCore pour remplacer cette fonction plutôt que de overrider tout le fichier " est ce faire la modification sur le fichier directement sans override ? Merci d'avance pour votre réponse Link to comment Share on other sites More sharing options...
Thorfy Posted June 4, 2016 Share Posted June 4, 2016 (edited) Merci pour cette solution, je crois qu'on est tous devant le même problème en version 1.6.1.5 Qu'entendez vous par "surcharger votre class AdminControllerCore pour remplacer cette fonction plutôt que de overrider tout le fichier " est ce faire la modification sur le fichier directement sans override ? Merci d'avance pour votre réponse Pas de problème pour la solution En fait ce que je veux dire par surcharger la fonction c'est que dans les faits au lieu de overrider tout le fichier vous aller overrider seulement la fonction dans laquelle est situé le fix ci-dessus. Pour ce faire il vous faudra tout de même passez par la création des fichiers et répertoires dans le dossier override. Mais au lieu d'avoir le fichier entier overrider (200ko ça commence à être plutôt lourd surtout lorsque l'on à beaucoup de fichier dans le dossier d'override) vous n'aurai que la fonction voulus. Il faut donc simplement faire. <?php class AdminController extends AdminControllerCore { // et la vous placez la fonction entière du fix (pas seulement le fix: il faut remonter jusqu'a sa déclaration: public function blablablablba() // cela évite d'avoir tout le fichier overrider alors que vous n'avez besoin que d'une fonction // ne pas oublier les accolades //ne pas fermer les balises ?php> car génère trop d'erreur sous prestashop (simplement les mettre en début de fichier) Il faut nommer ce fichier de la même manière. C-à-d AdminController.php et ne pas oublier de supprimer le fichier class_index.php dans le cache prestashop Ainsi vous venez de faire une surcharge de Class ou de méthode (ici AdminControllerCore) cela évite donc de prendre tout un fichier et de le remplacer ce qui pour des projets de taille moyenne et plus, peux entraîner de nombreuses latences. Privilégié toujours la surcharge plutôt que l'override brut Voila si vous avez encore des questions n'hesitez pas ^^ Bien Cordialement Remy Lefebvre Edited June 4, 2016 by Thorfy (see edit history) Link to comment Share on other sites More sharing options...
Patrick Proot Posted June 5, 2016 Share Posted June 5, 2016 Bonjour Remy Un tout grand merci pour cette explication détaillée,claire et efficace J'ai suivi tes instructions à la lettre et surclassé uniquement la classe C'est en effet bcp plus propre comme cela. Encore merci pour ton temps et ton aide. Le sujet peut être marqué comme résolu Bien amicalement Patrick Link to comment Share on other sites More sharing options...
Thorfy Posted June 13, 2016 Share Posted June 13, 2016 Bonjour Remy Un tout grand merci pour cette explication détaillée,claire et efficace J'ai suivi tes instructions à la lettre et surclassé uniquement la classe C'est en effet bcp plus propre comme cela. Encore merci pour ton temps et ton aide. Le sujet peut être marqué comme résolu Bien amicalement Patrick Bonjour je reviens vers toi car j'ai pu détécter quelque bug dans ma solution: -lorsque l'on filtre par nom une date apparait: 01/01/1970 -filtrage avec une seule date impossible c'est pourquoi je te propose une nouvelle version de mon code. L'ayant fixer ce matin. <?php class AdminController extends AdminControllerCore { public function addFiltersToBreadcrumbs() { if ($this->filter && is_array($this->fields_list)) { $filters = array(); foreach ($this->fields_list as $field => $t) { if (isset($t['filter_key'])) { $field = $t['filter_key']; } if (($val = Tools::getValue($this->table . 'Filter_' . $field)) || $val = $this->context->cookie->{$this->getCookieFilterPrefix() . $this->table . 'Filter_' . $field}) { if (!is_array($val)) { $filter_value = ''; if (isset($t['type']) && $t['type'] == 'bool') { $filter_value = ((bool) $val) ? $this->l('yes') : $this->l('no'); // -------------- fix problème d'affichage du filtre par date dans l'onglet commande } elseif (isset($t['type']) && $t['type'] == 'datetime') { $date = Tools::unSerialize($val); if (!empty($date[0])) { //transformation de la chaine de caractère en format date $s_filtredate1 = strtotime($date[0]); //convertion du format de date Americaine en format Français $filtredate1 = date('d/m/Y', $s_filtredate1); $filter_value = $filtredate1; } if (!empty($date[1])) { $s_filtredate2 = strtotime($date[1]); $filtredate2 = date('d/m/Y', $s_filtredate2); //assemblage des deux dates $filter_value .= ' au ' . $filtredate2; } // -------------- FIN fix problème d'affichage du filtre par date dans l'onglet commande } elseif (is_string($val)) { $filter_value = htmlspecialchars($val, ENT_QUOTES, 'UTF-8'); } if (!empty($filter_value)) { $filters[] = sprintf($this->l('%s: %s'), $t['title'], $filter_value); } } else { $filter_value = ''; foreach ($val as $v) { if (is_string($v) && !empty($v)) { $filter_value .= ' - ' . htmlspecialchars($v, ENT_QUOTES, 'UTF-8'); } } $filter_value = ltrim($filter_value, ' -'); if (!empty($filter_value)) { $filters[] = sprintf($this->l('%s: %s'), $t['title'], $filter_value); } } } } if (count($filters)) { return sprintf($this->l('filter by %s'), implode(', ', $filters)); } } } } Je te donne le fichier entier tu n'aura qu'a remplacer celui-ci. Cordialement Remy Lefebvre www.RemyLefebvre.fr Link to comment Share on other sites More sharing options...
Patrick Proot Posted June 14, 2016 Share Posted June 14, 2016 Un tout grand merci pour ce correctif du correctif ça fonctionne nickel Juste un petit détail pour atteindre la perfection quand au recherche sur une date par exemple debut le 25/5/2016 il affiche les commandes du 25/5/2016 à ce jour c'est parfait dans le titre il met filtre par date : 25/5/2016 pour être parfait il devrait mettre filtre par date : 25/5/2016 au 14/06/2016 (date du jour) quand au recherche sur une date par exemple fin le 25/5/2016 il affiche les commandes du début au 25/5/2016 c'est parfait dans le titre il met filtre par date : au 25/5/2016 ce qui est parfait aussi pour moi Encore merci ça va en aider plus d'un Passes une belle journée Patrick Link to comment Share on other sites More sharing options...
Thorfy Posted June 15, 2016 Share Posted June 15, 2016 En effet, ayant fait le correctif rapidement je ne m'étais pas rendu compte de ça. Je le modifierai pendant une pause si j'ai le temps de mis pencher très sérieusement. Je te referai un retour à ce moment la. N’hésite pas si tu à la moindre question et que tu pense que je suis en mesure de t'aider. Très cordialement, Remy, www.RemyLefebvre.fr 1 Link to comment Share on other sites More sharing options...
Patrick Proot Posted June 17, 2016 Share Posted June 17, 2016 Ce n'est qu'un tout petit détail d'affichage Ca n'empeche pas le fonctionnement....il n'y a donc pas le feu au lac Merci pour ta proposition d'aide, je risque bien de te prendre au mot après mes vacances A bientôt 1 Link to comment Share on other sites More sharing options...
f4r4b3l Posted June 29, 2016 Share Posted June 29, 2016 Bonjour à tous, Merci beaucoup pour cette solution !! Elle fonctionne parfaitement ! En espérant que l'équipe puisse mettre ce correctif dans leur prochaine énième mise à jour ! Merci encore ----- Farah 1 Link to comment Share on other sites More sharing options...
S.Fatiha Posted July 28, 2016 Share Posted July 28, 2016 Bonjour, J'ai eu le même problème, peux-tu me donner ton fichier en complet de AdminController.php. afin de remplacer le mien. Merci . En effet, ayant fait le correctif rapidement je ne m'étais pas rendu compte de ça. Je le modifierai pendant une pause si j'ai le temps de mis pencher très sérieusement. Je te referai un retour à ce moment la. N’hésite pas si tu à la moindre question et que tu pense que je suis en mesure de t'aider. Très cordialement, Remy, www.RemyLefebvre.fr Link to comment Share on other sites More sharing options...
Thorfy Posted July 29, 2016 Share Posted July 29, 2016 (edited) Bonjour, concernant le fix tout est expliqué dans le post #4 et le post #6 En revanche je ne peux pas fournir te fournir le fichier entier en effet ayant fait de nombreux changement sur celui ci ne fonctionnera très certainement pas sur ton environnement. De plus je ne travail plus dans la boite pour qui j'ai corriger le beug je n'ai pas accés à ce fichier. En revanche comme je le disais tout est expliqué plus haut dans le topic. Si tu as une question et qu'elle ne se trouve dans le topic n'hésite pas à me demander Cordialement, Rémy. http://www.RemyLefebvre.fr Edited July 29, 2016 by Thorfy (see edit history) Link to comment Share on other sites More sharing options...
S.Fatiha Posted July 29, 2016 Share Posted July 29, 2016 Parfait, je vais suivre la procédure déjà expliquée. Merci infiniment pour ton retour de message. Bonjour, concernant le fix tout est expliqué dans le post #4 et le post #6 En revanche je ne peux pas fournir te fournir le fichier entier en effet ayant fait de nombreux changement sur celui ci ne fonctionnera très certainement pas sur ton environnement. De plus je ne travail plus dans la boite pour qui j'ai corriger le beug je n'ai pas accés à ce fichier. En revanche comme je le disais tout est expliqué plus haut dans le topic. Si tu as une question et qu'elle ne se trouve dans le topic n'hésite pas à me demander Cordialement, Rémy. http://www.RemyLefebvre.fr Link to comment Share on other sites More sharing options...
f4r4b3l Posted July 29, 2016 Share Posted July 29, 2016 Hello Fsair, Tu trouveras en pièce jointe le fichier modifié. Personnellement, je n'avais pas encore surchargé ce fichier donc il n'y a que les recommandations de Remy (Thorfy, Merci encore ). AdminController.zip Comme précisé dans son post, tu dois charger le fichier AdminController .php dans /override/classes/controller. Tiens nous informé du résultat ! 1 Link to comment Share on other sites More sharing options...
S.Fatiha Posted August 10, 2016 Share Posted August 10, 2016 Hello Fsair, Tu trouveras en pièce jointe le fichier modifié. Personnellement, je n'avais pas encore surchargé ce fichier donc il n'y a que les recommandations de Remy (Thorfy, Merci encore ). AdminController.zip Comme précisé dans son post, tu dois charger le fichier AdminController .php dans /override/classes/controller. Tiens nous informé du résultat ! Bonjour à tous, Merci f4r4b3l ainsi que Remy, ça marche. c'est résolu. Link to comment Share on other sites More sharing options...
lily fairy Posted August 14, 2016 Share Posted August 14, 2016 Hello Fsair, Tu trouveras en pièce jointe le fichier modifié. Personnellement, je n'avais pas encore surchargé ce fichier donc il n'y a que les recommandations de Remy (Thorfy, Merci encore ). AdminController.zip Comme précisé dans son post, tu dois charger le fichier AdminController .php dans /override/classes/controller. Tiens nous informé du résultat ! ça fonctionne parfaitement ne pas oublier de supprimer le fichier class_index.php dans le cache prestashop Link to comment Share on other sites More sharing options...
renaud2263 Posted October 4, 2017 Share Posted October 4, 2017 Bonjour à tous, je me permets de remonter ce post car je viens d'appliquer le correctif en créant l'override de la fonction addFiltersToBreadcrumbs(). Le fichier class_index a bien été supprimé, le cache PS vidé et même celui du navigateur...mais du coup plus aucune date ne s'affiche. Auparavant, avec le 1er correctif, j'avais une date française à 1970 comme dit par Rémy. Mais là, plus rien. Une idée ? 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