Rafraichissement ajax dans checkout shipping

  • Posts: 99
  • Thank you received: 3
6 years 20 hours ago #291746

-- HikaShop version -- : 3.4
-- Joomla version -- : 3.8.7
-- PHP version -- : 5.6.8

Bonjour,

Actuellement j'essaye de faire apparaitre une liste de relais sur une carte google map. Cela fonctionne bien. Par contre j'ai rajouté des champs input cp, ville,pays, rue, adresse_extra au dessus de la carte au cas ou un client veuille centrer la carte et des relais sur une autre adresse que son adresse de livraison selectionnée. En passant les variables en get dans la version legacy de shipping, cela fonctionne bien.

Actuellement, j'essaye de passer via show_block_shipping.php pour beneficier de la technologie ajax et je ne sais pas comment faire passer les variables des champs afin qu'ils soient accessibles dans les plugins d'expedition et puissent ainsi être pris en compte (la partie plugin fonctionne deja).

Je pense qu'il faut utiliser sur le bouton Recherche un javascript type window.checkout.submitShipping mais je n'arrive pas à l'ecrire. Pouvez vous m'aider? J'ai juste besoin de savoir comment faire passer ses 5 variables dans le rafraichissement de show_block_shipping.php.

Merci par avance
Nicolas


Joomla 3
Attachments:
Last edit: 5 years 11 months ago by nilegoff.

Please Log in or Create an account to join the conversation.

  • Posts: 81515
  • Thank you received: 13069
  • MODERATOR
6 years 12 hours ago #291748

Bonjour,

En supposant que vous avez ajouté cette interface dans show_block_shipping, alors si vous appelez window.checkout.submitShipping les champs, qui sont dans cette interface, seront automatiquement envoyés.
Si vous ne les avez pas à l'arrivée, c'est qu'ils ne sont pas dans show_block_shipping mais ailleurs et dans ce cas, vous pourriez rajouter des champs cachés dans show_block_shipping avec du js dans vos champs qui modifieraient ces champs cachés lorsqu'ils seraient modifiés.

Please Log in or Create an account to join the conversation.

  • Posts: 99
  • Thank you received: 3
6 years 11 hours ago #291787

Merci pour votre reponse.

Mes champs input sont bien dans "show_block_shipping.php".
Pour un champ se nommant xxxxx, comment dois je appeler sa valeur dans la fonction onShippingDisplay de mon plugin d'expedition?

Merci par avance
Nicolas


Joomla 3

Please Log in or Create an account to join the conversation.

  • Posts: 81515
  • Thank you received: 13069
  • MODERATOR
5 years 11 months ago #291812

Bonjour,

Déjà, avant onShippingDisplay, il faudrait implémenter onShippingSave pour récupérer la valeur du POST lors de la soumission du formulaire (AJAX ou non). C'est très facile, c'est dans

$_POST['xxxxxx']
Le plus simple c'est de sauvegarder cela dans $_SESSION pour que vous puissiez l'utiliser dans onShippingDisplay ensuite.
Car onShippingDisplay peut être appelé même sans soumission de la vue shipping.
Par exemple, si vous afficher la vue panier sur une étape, lorsque vous arrivez sur l'étape, le chargement du panier appelle onShippingDisplay pour vérifier les méthodes de shipping disponible pour le panier. Et dans ce cas, vous n'avez rien dans $_POST.

Please Log in or Create an account to join the conversation.

  • Posts: 99
  • Thank you received: 3
5 years 11 months ago #291928

Merci pour votre conseil de passer avec les variable de session.

Une dernière question afin de ne pas créer de breche de securité.
J'utilise

$session = JFactory::getSession();

pour initaialiser les l'acces aux données de sessions.
Est ce que

$adresse=$session->get('adresse');

est securisé en lui même ou faut il filtrer la variable $adresse obtenue.

Merci par avance.
Nicolas


Joomla 3

Please Log in or Create an account to join the conversation.

  • Posts: 81515
  • Thank you received: 13069
  • MODERATOR
5 years 11 months ago #291934

Bonjour,

Il n'y a pas de soucis de sécurité à directement utiliser $_SESSION.
Dans $_SESSION, il n'y a que ce que vous mettez vous même dedans. Ce n'est pas comme $_POST, $_GET ou $_REQUEST qui sont initialisés avec des données venant du navigateur.
Donc vous pouvez directement utiliser $_SESSION.
Il n'y a pas besoin d'initialiser la session ou de la détruire, c'est géré par Joomla automatiquement, donc c'est super facile.

Please Log in or Create an account to join the conversation.

  • Posts: 99
  • Thank you received: 3
5 years 11 months ago #292342

Merci beaucoup.


Joomla 3

Please Log in or Create an account to join the conversation.

Time to create page: 0.068 seconds
Powered by Kunena Forum