Jump to content
RomainBellina

Problème D'override Non Pris En Compte.

Recommended Posts

Bonjour,

 

Je n'arrive pas à trouver ma solution sur le forum pour mon problème d'override.

 

Je souhaite modifier la référence de mes commandes en leur donnant des numéros plutôt que des lettres. 

 

Pour ca je fait un override du fichier /www/classes/order/Order.php dans mon fichier /www/override/classes/order/Order.php

Je supprime bien le fichier /www/cache/class_index.php pour que l'override soit pris en compte.

Mais rien à faire, impossible de faire fonctionner l'override. Quand je regarde le fichier class_index.php nouvellement générer, il me dit qu'il n'y a pas d'override de disponible pour la fonction que j'appel. 

 

Voici la fonction normal : 

class OrderCore extends ObjectModel
{
    ...
    public static function generateReference()
    {
        return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));
    }
    ...
}
 
Voici mon override : 
 
class Order extends OrderCore
{
     public static function generateReference()
    {
        $last_id = Db::getInstance()->getValue('SELECT MAX(id_order)FROM '._DB_PREFIX_.'orders');
        return str_pad((int)$last_id + 1, 9, '000000000', STR_PAD_LEFT);
    }
}

 

Et la ligne correspondant au OrderCore dans class_index.php : 

 
'OrderCore' => 
  array (
    'path' => 'classes/order/Order.php',
    'type' => 'class',
    'override' => false,
  ),
 
Et celle de Order dans le même fichier : 
 
 'Order' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),

 

J'ai même essayer de changer la nouvelle classe que je crée 'Order' en 'OrderABC' et rien n'apparait dans class_index.php.

 

Ma fonction dans l'override fonction très bien, car actuellement j'ai remplacé le code du fichier source par ce code, mais je ne suis pas fan de cette méthode et souhaite que mon override fonctionne. 

 

Je suis sous prestashop 1.6.0.14.

 

Merci et bonne journée,

Romain.

Share this post


Link to post
Share on other sites

A tout hasard, vérifiez que les overrides sont bien activées dans la page Performances.

 

Oui, ça arrive plus souvent qu'on le croit :)

Et vérifier que le /cache/class_index.php est bien à jour (le virer pour le regénérer en cas de doute)

Share this post


Link to post
Share on other sites

J'ai bien vérifier que l'override n'est pas désactivé dans le menu performance et j'ai également procédé à la suppression du fichier class_index.php à plusieurs reprise dans mes testes, mais rien à faire. Il se regénère bien à chaque fois mais ne prend pas en compte l'override.

post-1127618-0-41080100-1458307133_thumb.png

Share this post


Link to post
Share on other sites

méthode un peu bourrin : mets un print et un die dans tes méthodes surchargées, pour voir si tu passes dedans ou pas ! 

Share this post


Link to post
Share on other sites

méthode un peu bourrin : mets un print et un die dans tes méthodes surchargées, pour voir si tu passes dedans ou pas ! 

 

Rien ne s'affiche a l'écran ni dans l'inspecteur. Il ne prend pas en compte mes overrides. 

Share this post


Link to post
Share on other sites

tu peux nous poster la partie du class_index qui cite la classe Order ?

Share this post


Link to post
Share on other sites

Voici tout le class_index.php concernant l'Order 

 

  'Order' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderCarrier' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderCarrierCore' => 
  array (
    'path' => 'classes/order/OrderCarrier.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderCartRule' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderCartRuleCore' => 
  array (
    'path' => 'classes/order/OrderCartRule.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderConfirmationController' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderConfirmationControllerCore' => 
  array (
    'path' => 'controllers/front/OrderConfirmationController.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderController' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderControllerCore' => 
  array (
    'path' => 'controllers/front/OrderController.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderCore' => 
  array (
    'path' => 'classes/order/Order.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderDetail' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderDetailController' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderDetailControllerCore' => 
  array (
    'path' => 'controllers/front/OrderDetailController.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderDetailCore' => 
  array (
    'path' => 'classes/order/OrderDetail.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderDiscount' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderDiscountCore' => 
  array (
    'path' => 'classes/order/OrderDiscount.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderFollowController' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderFollowControllerCore' => 
  array (
    'path' => 'controllers/front/OrderFollowController.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderHistory' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderHistoryCore' => 
  array (
    'path' => 'classes/order/OrderHistory.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderInvoice' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderInvoiceCore' => 
  array (
    'path' => 'classes/order/OrderInvoice.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderMessage' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderMessageCore' => 
  array (
    'path' => 'classes/order/OrderMessage.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderOpcController' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderOpcControllerCore' => 
  array (
    'path' => 'controllers/front/OrderOpcController.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderPayment' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderPaymentCore' => 
  array (
    'path' => 'classes/order/OrderPayment.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderReturn' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderReturnController' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderReturnControllerCore' => 
  array (
    'path' => 'controllers/front/OrderReturnController.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderReturnCore' => 
  array (
    'path' => 'classes/order/OrderReturn.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderReturnState' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderReturnStateCore' => 
  array (
    'path' => 'classes/order/OrderReturnState.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderSlip' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderSlipController' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderSlipControllerCore' => 
  array (
    'path' => 'controllers/front/OrderSlipController.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderSlipCore' => 
  array (
    'path' => 'classes/order/OrderSlip.php',
    'type' => 'class',
    'override' => false,
  ),
  'OrderState' => 
  array (
    'path' => '',
    'type' => 'class',
    'override' => false,
  ),
  'OrderStateCore' => 
  array (
    'path' => 'classes/order/OrderState.php',
    'type' => 'class',
    'override' => false,
  ),

Share this post


Link to post
Share on other sites

Moi quand je surcharge Order (dans /override/classes/order/Order.php), j'ai ça pour "orderCore" dans le class_index :

 

  'OrderCore' => 
  array (
    'path' => 'override/classes/order/Order.php',
    'type' => 'class',
    'override' => false,
  ),

Alors que chez toi, ça fait référence à la classe du coeur !

Share this post


Link to post
Share on other sites

absolument, voici le code intégral de mon exemple :

<?php

class Order extends OrderCore
{

    public function __construct($id = null, $id_lang = null)
    {
		print "order overridé";
    }
}

Share this post


Link to post
Share on other sites

 

absolument, voici le code intégral de mon exemple :

<?php

class Order extends OrderCore
{

    public function __construct($id = null, $id_lang = null)
    {
		print "order overridé";
    }
}

 

En observant ton code je me suis rendu compte qu'il manquait quelque chose dans mon fichier, et je me sens honteux de l'avoir oublier ... 

Il n'y avait pas de <?php en haut de mon fichier. Je viens de l'ajouter et tout fonctionne normalement. 

 

Merci pour l'aide.

  • Like 1

Share this post


Link to post
Share on other sites

Quand on a le nez dedans, on ne voit pas forcément des trucs aussi énormes :)

Cool si c'est ok maintenant, alors !

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More