Jump to content

Admin Controller introuvable lors du passage en prod


Recommended Posts

Bonjour,

J'ai développé un module sous Prestashop 1.7.7.3 sur un WAMP.
Le module fonctionne et les Admin Controller sont bien trouvé en local mais lors du passage en production j'ai le message suivant :
"Le contrôleur AdminGestionTruc est manquant ou non valable."

Cela me fais ce souci sur tous mes controllers.
J'ai testé sur 2 sites en local, le module fonctionne parfaitement mais dès qu'on passe sur un site hébergé (OVH), plus moyen d'atteindre les controllers.

Sur la version en prod, le module s'installe bien, les tabs s'affichent bien avec le bon URL de redirection, vers les Admin Controller mais visiblement il ne les trouve jamais. (La BDD se rempli correctement au niveau des tables tabs également).
Mes Admin Controller sont bien dans un dossier controllers > admin.

Aucune erreur ne ressort ni dans les logs ni en console.

La seule différence entre le site local (qui fonctionne) et le site en prod c'est l'hébergement et la présence du SSL.

Je mets le code d'un des Admin Controller

include _PS_MODULE_DIR_.'/gestionProduction/classes/Recette.php';


class AdminGestionRecetteController extends ModuleAdminController{
    
    // Instanciation de la classe
    public function __construct(){

        $this->bootstrap = true; //Gestion de l'affichage en mode bootstrap
        $this->table = 'gp_recette'; //Table de l'objet
        $this->identifier = 'id_recette'; //Clé primaire de l'objet
        $this->className = Recette::class; //Classe de l'objet
        $this->lang = false; //Flag pour dire si utilisation de langues ou non
        $this->_join = 'INNER JOIN '._DB_PREFIX_. 'gp_' . 'categorie_recette c ON (a.id_categorie_recette = c.id_categorie_recette)';
        $this->_select = 'c.nom_categorie_recette AS `categorie_recette`';

        //Liste des champs de l'objet à afficher dans la liste
        $this->fields_list = array(
            'code_recette' => array('title' => 'Code', 'width' => 'auto'),
            'categorie_recette' => array('title' => 'Categorie', 'width' => 'auto'), 
            'variete_recette' => array('title' => 'Variété', 'width' => 'auto'), 
        );

        //Ajout d'actions sur chaque ligne
        //$this->addRowAction('view');
        $this->addRowAction('edit');
        $this->addRowAction('delete');
        
        parent::__construct();
    }

     /**
     * Affichage du formulaire d'ajout / création de l'objet
     * @return string
     * @throws SmartyException
     */
    public function renderForm()
    {
        //Définition du formulaire d'ajout
        $this->fields_form = [
            //Entête
            'legend' => [
                'title' => $this->module->l('Ajout d\'une recette'),
                'icon' => 'icon-cog'
            ],
            //Champs
            'input' => [
                [
                    'type' => 'text', //Type de champ
                    'label' => $this->module->l('name'), //Label
                    'name' => 'name', //Nom
                    'class' => 'input fixed-width-md', //classes css
                    'size' => 50, //longueur maximale du champ
                    'required' => true, //Requis ou non
                    'empty_message' => $this->l('Please fill the postcode'), //Message d'erreur si vide
                    'hint' => $this->module->l('Enter sample name') //Indication complémentaires de saisie
                ],
                [
                    'type' => 'text',
                    'label' => $this->module->l('code'),
                    'name' => 'code',
                    'class' => 'input fixed-width-md',
                    'size' => 5,
                    'required' => true,
                    'empty_message' => $this->module->l('Please fill the code'),
                ],
                [
                    'type' => 'text',
                    'label' => $this->module->l('email'),
                    'name' => 'email',
                    'class' => 'input fixed-width-md',
                    'size' => 5,
                    'required' => true,
                    'empty_message' => $this->module->l('Please fill email'),
                ],
                [
                    'type' => 'text',
                    'label' => $this->module->l('Title'),
                    'name' => 'title',
                    'class' => 'input fixed-width-md',
                    'lang' => true, //Flag pour utilisation des langues
                    'required' => true,
                    'empty_message' => $this->l('Please fill the title'),
                ],
            ],
            //Boutton de soumission
            'submit' => [
                'title' => $this->l('Save'), //On garde volontairement la traduction de l'admin par défaut
            ]
        ];
        return parent::renderForm();
    }
}


 

Link to comment
Share on other sites

Bonjour, 

J'ai vérifié, tout correspond bien au niveau des noms.
J'ai même testé en "cassant" le code de l'environnement de test (là où le module marche) en changeant mal un nom pour comparer l'erreur à la version en prod mais je n'obtenais pas le même résultat donc j'ai écarté cette hypothèse.

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...