- Posts: 99
- Thank you received: 3
Modifier une variable dans une session
12 years 9 months ago - 12 years 9 months ago #135923
by nilegoff
Joomla 3
Modifier une variable dans une session was created by nilegoff
-- HikaShop version -- : 2.2.2
-- Joomla version -- : 3.2
-- PHP version -- :5.3.17
Bonjour
Comme deja exposé dans un topic precedent, vous proposiez de modifier la variable de session adresse de livraison avec:
www.hikashop.com/forum/5-support-en-fran...se-de-livraison.html
J'essaye de mettre en place cela mais rien ne se passe.
Voici ma fonction onBeforeOrderCreate que j'ai creer, et je ne vois pas l'erreur.
Merci par avance pour votre aide.
Nicolas
-- Joomla version -- : 3.2
-- PHP version -- :5.3.17
Bonjour
Comme deja exposé dans un topic precedent, vous proposiez de modifier la variable de session adresse de livraison avec:
Code:
$app=JFactory::getApplication();
$app->setUserState('com_hikashop.shipping_address',$address_id);
J'essaye de mettre en place cela mais rien ne se passe.
Voici ma fonction onBeforeOrderCreate que j'ai creer, et je ne vois pas l'erreur.
Code:
function onBeforeOrderCreate(&$order, &$do){
$app = JFactory::getApplication();
$shipping_method = $app->getUserState('com_hikashop.shipping_data');
if ($shipping_method[0]->id_relais!='0') //Mise en memoire de l'adresse et creation de l'adresse du relais
{
$user_id = hikashop_loadUser();//chargement de l'id du client
$address_company=$shipping_method[0]->shipping_name;
$address_street=$shipping_method[0]->adresse1;
$address_street2=$shipping_method[0]->adresse2;
$address_post_code=$shipping_method[0]->cp;
$address_city=$shipping_method[0]->ville;
$address_country=$shipping_method[0]->pays;
$address_published='0';
$address_default='0';
$db =& JFactory::getDBO(); // enregistrement de l'adresse du relais dans la base de données
$query = "INSERT INTO ".hikashop_table('address')." (address_user_id,address_company, address_street, address_street2, address_post_code, address_city, address_country, address_published, address_default)
VALUES ('".$user_id."', '".$address_company."', '".$address_street."', '".$address_street2."', '".$address_post_code."', '".$address_city."', '".$address_country."', '0', '0' )";
$db->setQuery( $query );
$db->query();
$db = JFactory::getDBO(); //Recuperation l'id de l'adresse du client qui vient d'etre enregistrer
$db->setQuery('SELECT address_id FROM '.hikashop_table('address').' WHERE address_user_id = '.$user_id. ' ORDER BY address_id DESC LIMIT 1');
$address_id = $db->loadResult();
$app=JFactory::getApplication();//Rajout l'ID de l'adresse dans la session
$app->setUserState('com_hikashop.shipping_address',$address_id);
}
$order->id_relais = $shipping_method[0]->id_relais;
$order->adresse_relais = $shipping_method[0]->adresse_relais;
}
Merci par avance pour votre aide.
Nicolas
Joomla 3
Last edit: 12 years 9 months ago by nilegoff.
Please Log in or Create an account to join the conversation.
12 years 9 months ago #135938
by nilegoff
Joomla 3
Replied by nilegoff on topic Modifier une variable dans une session
Je me reponds à moi meme apres avoir pris un peu recule et j'ai remplacé
par
Cela a l'air de fonctionner.
Pouver vous me confirmer que le code reste sur?
Merci par avance
Nicolas
Code:
$app->setUserState('com_hikashop.shipping_address',$address_id);
Code:
$order->order_shipping_address_id=$app->setUserState(HIKASHOP_COMPONENT.'.shipping_address',$address_id);
Cela a l'air de fonctionner.
Pouver vous me confirmer que le code reste sur?
Merci par avance
Nicolas
Joomla 3
Please Log in or Create an account to join the conversation.
12 years 9 months ago #135942
by nicolas
Replied by nicolas on topic Modifier une variable dans une session
Oui c'est la solution. Dans le onBeforeOrderCreate, la variable de session est déjà récupérée par le système pour créer $order qui vous est passé avant la sauvergarde de la commande. Il faut donc directement assigner la valeur dans $order comme vous avez devinez.
Please Log in or Create an account to join the conversation.
12 years 9 months ago #135992
by nilegoff
Joomla 3
Replied by nilegoff on topic Modifier une variable dans une session
Par contre, après quelques tests, je me suis rendu compte que je perdais, une fois la commande enregistrée, la variable de session concernant l'adresse d'expedition par defaut à pripori.
Si je vais sur historique de commande, tous les prix passe en HT. Si je repasse une autre commande, il me faut choisir l'adresse par 2 fois.
Voyez vous où je peux perdre les informations?
Nicolas
Si je vais sur historique de commande, tous les prix passe en HT. Si je repasse une autre commande, il me faut choisir l'adresse par 2 fois.
Voyez vous où je peux perdre les informations?
Nicolas
Joomla 3
Please Log in or Create an account to join the conversation.
12 years 9 months ago #136116
by nicolas
Replied by nicolas on topic Modifier une variable dans une session
Cela ne devrait pas être le cas, sauf si vous utiliser le mode "guest". En ce cas, les informations de l'utilisateur sont enlevés de la session après la commande et c'est donc normal.
Cela se fait avec le code:
$app->setUserState( HIKASHOP_COMPONENT.'.user_id', 0);
dans components/com_hikashop/controllers/checkout.php
Cela se fait avec le code:
$app->setUserState( HIKASHOP_COMPONENT.'.user_id', 0);
dans components/com_hikashop/controllers/checkout.php
Please Log in or Create an account to join the conversation.
Time to create page: 0.171 seconds