RomainBellina Posted March 18, 2016 Share Posted March 18, 2016 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. Link to comment Share on other sites More sharing options...
JPresta.com Posted March 18, 2016 Share Posted March 18, 2016 A tout hasard, vérifiez que les overrides sont bien activées dans la page Performances. Link to comment Share on other sites More sharing options...
Johann Posted March 18, 2016 Share Posted March 18, 2016 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) Link to comment Share on other sites More sharing options...
RomainBellina Posted March 18, 2016 Author Share Posted March 18, 2016 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. Link to comment Share on other sites More sharing options...
Johann Posted March 18, 2016 Share Posted March 18, 2016 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 ! Link to comment Share on other sites More sharing options...
RomainBellina Posted March 18, 2016 Author Share Posted March 18, 2016 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. Link to comment Share on other sites More sharing options...
Johann Posted March 18, 2016 Share Posted March 18, 2016 tu peux nous poster la partie du class_index qui cite la classe Order ? Link to comment Share on other sites More sharing options...
RomainBellina Posted March 18, 2016 Author Share Posted March 18, 2016 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, ), Link to comment Share on other sites More sharing options...
Johann Posted March 18, 2016 Share Posted March 18, 2016 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 ! Link to comment Share on other sites More sharing options...
RomainBellina Posted March 18, 2016 Author Share Posted March 18, 2016 On est bien d'accord que dans l'override je doit faire une class Order qui extends la class OrderCore ? Link to comment Share on other sites More sharing options...
Johann Posted March 18, 2016 Share Posted March 18, 2016 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é"; } } Link to comment Share on other sites More sharing options...
RomainBellina Posted March 18, 2016 Author Share Posted March 18, 2016 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. 1 Link to comment Share on other sites More sharing options...
Johann Posted March 18, 2016 Share Posted March 18, 2016 Quand on a le nez dedans, on ne voit pas forcément des trucs aussi énormes Cool si c'est ok maintenant, alors ! Link to comment Share on other sites More sharing options...
doekia Posted March 18, 2016 Share Posted March 18, 2016 Moi comme ce bout de code est plus compliqué qu'il n'y parait, pour ne pas réinventer la roue, j'utilise le module à Eolia pour faire ça http://eoliashop.com/Modules_Prestashop/Prestashop15-16/reftoid 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