Jump to content

[PShop 1.5.4.x] : Override d'adminTab --> help


Recommended Posts

Bonjour,

 

Je pense que je pige plus le système d'override de PShop à partir de la version 1.5.4.0. J'ai potassé la doc mais j'ai rien trouvé. J'en appelle donc aux dev.

 

En de 1.4.9 à 1.5.3 quand j'écrivais ca dans un override d'admintab à moi, ca fonctionnait :

 

class AdminProductsController extends AdminProductsControllerCore {

 

Petite note, effectivement en 1.4, il fallait que je "triche" en ajoutant ca (mais c'est hors-propos, c'est juste pour éviter des commentaires genre "ah non ca pouvait pas marche en 1.4 parce que ..." :

 

include_once (PS_ADMIN_DIR.'/tabs/AdminProducts.php');
eval("class AdminProductsControllerCore extends AdminProducts {}");

 

Avec ce code, je pouvais tranquillement réécrire/modifier des fonctions natives quand je pouvais pas utiliser de hooks.

 

En 1.5.4, avec et sans la "triche", je prend ca :

Fatal error: Class 'AdminProductsControllerCore' not found in /home/work/prestashop-1.5.4.1/override/controllers/admin/AdminProductsController.php on line 8

 

Même en trichant à nouveau en incluant /controller/admin/AdminProductsController.php à la main ca tourne pas.

 

Très franchement là, je sèche et j'ai pas des masses envies de rentrer dans le code de l'Autoload.php ou le quelconque nouveau système d'override des 1.5.4 (qui diffère ENCORE UNE FOIS des 1.4.9 et des 1.5.3, mais c'est un autre sujet hein...).

 

Est-ce qu'un codeur qui traine dans le coin pourrait m'éclairer un peu ?!

Link to comment
Share on other sites

Le fichier override est bien situé dans /override/controllers/admin ?

 

J'essaie de voir petit à petit d'où vient le soucis, là j'avoue que l'erreur me semble bizarre sur le coup.

 

Est-ce que, éventuellement, une suppression du fichier /cache/class_index.php a été supprimé ?

Link to comment
Share on other sites

Merci J. Dans pour le retour.

 

Le fichier est bien au bon endroit oui et j'ai déjà tenté de jouer avec le class_index.php (supression, modif à la main...etc) mais le pb reste.

 

En fait, on dirait que PHP s'attend à trouver AdminProductsControllerCore.php dans le répertoire /override/controllers/admin. Ca me semble aussi très bizarre, mais on ne sait jamais, je suis peut être passé à côté de quelque chose

Link to comment
Share on other sites

Personellement, je viens de regarder.

 

Mon fichier est situé dans /override/controllers/admin/ et se nomme AdminProductsController.php

 

Voici un bout de code du début:

<?php
class AdminProductsController extends AdminProductsControllerCore
{

 

Si ça peut t'aider, :)

Link to comment
Share on other sites

Avec plaisir ! :)

 

Au pire, si tu le souhaites, je peux éventuellement t'aider au delà du forum (via le code, par inspection, sait-on jamais). Bon, évidemment, cela nécessite des accès FTPs (que je ne conseille pas de donner en publique, bien entendu), ;-)

Link to comment
Share on other sites

Bon, résolu, mais franchement pas enchanté :

 

Mon fichier cache/class_index.php, après install de mon module, ressemblait à ca :

'AdminProductsController' => '',
'AdminProductsControllerCore' => 'override/controllers/admin/AdminProductsController.php',

 

ce qui me semblait quand même pas mal faux...right ?

 

Alors je l'ai changé à ca :

'AdminProductsController' => 'override/controllers/admin/AdminProductsController.php',
'AdminProductsControllerCore' => 'controllers/admin/AdminProductsController.php',

 

et là ca tourne.....mais le fichier fini par être remis à jour avec les mauvaises références...

 

 

Faudrait quand même voir à m'expliquer....

Edited by Luc Lérot Freelance (see edit history)
Link to comment
Share on other sites

Sur le coup, de fait, c'est bien la structure du fichier qui n'est pas bonne. Cela dit, c'est pour ça aussi que j'avais demandé si il était bien supprimé, voir quoi. Je ne sais pas d'où vient, sinon, n'ayant pas eu ce soucis jusqu'à présent :-/

Link to comment
Share on other sites

Ben en le supprimant, ca me pète à la gueule (et oui oui les droits sont corrects). En le supprimant, il me le re-créé mauvais.

 

En le modifiant à la main, il fini par me le re-créer quand même avec la mauvaise structure...En 1.5.3, no problem, depuis la 1.5.4 ca bug.

Edited by Luc Lérot Freelance (see edit history)
Link to comment
Share on other sites

  • 4 weeks later...

Ok, SOLVED...

 

En fait, le class_index.php est mal généré parce que les lignes

'AdminProductsController' => '',
'AdminProductsControllerCore' => 'override/controllers/admin/AdminProductsController.php',

 

sont générées au travers d'un regexp qui cherche la chaine 'Core' quelque part dans la classe override. Si le Core est trouvé avant le mot clé "extend", la génération considère que la classe d'override devient la classe Core.

 

Et comme pour assurer une retrocompatibilité avec les 1.4, j'ajoutais ces 2 lignes AVANT la déclaration "extend" :

include_once (PS_ADMIN_DIR.'/tabs/AdminProducts.php');
eval("class AdminProductsControllerCore extends AdminProducts {}");

 

le mot clé "Core" est clairement positionné le "extend" ==> CQFD.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...