Page 1 sur 1

Perte de variables entre model et view

MessagePublié: 20 Nov 2017, 20:54
par SophieB
Bonjour,
j'ai un problème que je n'arrive pas à résoudre, j'spère trouver de l'aide ici :-)

J'ai un site OpenCart 1.5.6, je veux configurer ma page success pour faire remonter les données du panier dans Google Analytics

J'ai trouvé un vqmod qui permet de faire cela, mais impossible de le faire fonctionner...

Voilà comment cela fonctionne:
- on créé de nouvelles focntions dans catalog/model/checkout/order.php pour récupéere les infos nécessaires
- dan catalog/controller/checkout/success.php, on appelel ces fonctions et on stocke les données dans des varaibles, comme cela:

Code: Tout sélectionner
$this->load->model('checkout/order');
            $this->data['orderDetails'] = $this->model_checkout_order->getOrder($this->session->data['order_id']);
            $this->data['orderProducts'] = $this->model_checkout_order->getOrderProducts($this->session->data['order_id']);
            $this->data['orderShipping'] = $this->model_checkout_order->getOrderShipping($this->session->data['order_id']);
            $this->data['orderTax'] = $this->model_checkout_order->getOrderTax($this->session->data['order_id']);


Puis dans catalog/view/theme/*/template/common/success.tpl, on affiche ces données comme cela:

Code: Tout sélectionner
<?php if(isset($orderDetails) && isset($orderProducts)) { ?>

<script type="text/javascript">
    _gaq.push(['_addTrans',
        '<?php echo $orderDetails['order_id']; /* orderId */ ?>',
        <?php echo json_encode($orderDetails['store_name']); /* affiliation */ ?>,
        '<?php echo $orderDetails['total']; /* total */ ?>',
        '<?php if (isset($orderTax)) echo $orderTax[0]['value']; /* tax */ ?>',
        '<?php if (isset($orderShipping)) echo $orderShipping[0]['value']; /* shipping */ ?>',
        <?php echo json_encode($orderDetails['shipping_city']); /* city */ ?>,
        <?php echo json_encode($orderDetails['shipping_zone']); /* state */ ?>,
        <?php echo json_encode($orderDetails['shipping_country']); /* country */ ?>
    ]);

    <?php foreach($orderProducts as $product) { ?>
    _gaq.push(['_addItem',
        '<?php echo $product['order_id']; /* orderId */ ?>',
        <?php echo json_encode($product['model']); /* sku */ ?>,
        <?php echo json_encode($product['name']); /* name (product) */ ?>,
        <?php echo json_encode('Products'); /* category */ ?>,
        '<?php echo $product['price']; /* price */ ?>',
        '<?php echo $product['quantity']; /* quantity */ ?>'
    ]);
    <?php } ?>

    _gaq.push(['_trackTrans']);
</script>


En fait, les données ne s'affichent jamais dans ucess.tpl, car $orderDetails et $orderProducts sont "undefined".

Pourtant, si je fais un var_dump dans success.php, j'ai bien mes données remplies...

Donc, ce sont les variables qui ne passent pas entre success.php et success.tpl...

Pourtant, j'ai la variable $this->data['breadcrumbs'] définie dans success.php qui s'affichent sans problème dans success.tpl, en parcourant $breadcrumbs

Je n'arrive vraiment pas à comprendre d'où vient le problème...

Si un pro d'OpenCart ou qulqu'un qui aurait déjà eu ce problème pouvait m'aider, je lui en serais vraiment reconnaissante.

Merci

Sophie