Bonjour à tous,

J'ai cette erreur qui apparaît sans cesse dans mes logs, sur ma fonction en charge de mes modules.
J'ai cherché sur différents forums, mais je n'arrive pas à comprendre ce qu'il se passe !

Je tiens à préciser que je me suis basé sur les tutos des MVC de grafikart comme base.

Pour le moment, c'est la seule erreur récalcitrante que je n'arrive pas à supprimer !

Si une âme charitable avait une idée, je suis preneur ! (l'erreur se trouve à la ligne 52 dans le code collé ci-dessous)

Fabien

<?php

/**
 * Description of modulesConfigsController
 * Permer de faire la gestion des modules dans la console d'admin
 * @author
 */
class ModulesController extends Controller {
    function admin_index() {
        // on charge le modele
        $this->loadModel('Module');
        // on récupère la liste de tous les modules
        $d'modules'] = $this->Module->find(
        );
        // on envoi tout à la vue
        $this->set($d);
    }
    /**
     * Permet d'éditer un post
     */
    function admin_edit($id = NULL) {
        // on charge le model
        $this->loadModel('Module');
        // on charge tous les modules dont on va avoir besoin sur la page et on stock tout dans l'objet request->modules
        // on va récupérer tous les modules qui nous concernent
        //debug($this->request);
        $addMod = $this->Module->find(array(
            'fields' => 'id,module,contents',
            'conditions' => array(
                'id' => $id
            )
        ));
        //debug($addMod);
        $addMod = objectToArray($addMod);
        // debug($addMod);
        //debug($addMod[0]->contents);
        $mod = $this->Module->find(array(
            'fields' => 'id,module,contents,position',
            'conditions' => array(
                'contents' => isset($addMod[0]'contents']) ? $addMod[0]'contents'] : false
            )
        ));
        debug($mod);
        $loadedModule = isset($addMod[0]'module']) ? $addMod[0]'module'] : false;
        $this->loadModuleModel($loadedModule);
        //debug(get_class($this));
        $this->request->modules = $mod;
        // on va lancer notre requete
        $req = $this->$loadedModule->find(array( // <u><strong>/!\ c'est ici que php m'indique l'erreur /!\</strong></u>
            'conditions' => array(
                'id' => isset($addMod[0]'contents']) ? $addMod[0]'contents'] : false
            )
        ));
        //debug($req, 1);
        #################
        // ca va me permettre de générer un stdClass() pour que le contenu de ma table soit au bon niveau
        $this->request->extensionData = $req[0]; //
        #################
        //debug($this->request->extensionData);
        //debug($mod[0]->contents);
        // si on a pas d'id de défini on va enregistrer un article factice en bdd
        if ($id === NULL) {
            $module = $this->Module->findFirst(array(
                'conditions' => array(
                    'id' => -1
                )
            ));
            if (!empty($module)) {
                $id = $module->id;
            } else {
                $this->Module->save(array(
                    'online' => -1
                ));
                $id = $this->Module->id;
            }
        }
        $d'id'] = $id;
        if ($this->request->data) {
            // avant d'anvoyer les données en base on va vérifier si elles ont correctement été saisies
            if ($this->Module->validates($this->request->data)) {
                // avant de faire le save on peut inscrire des données par défaut
                $this->request->data->lang = '1';
                $this->request->data->publish_start = date("0000-00-00 00:00:00");
                $this->request->data->publish_end = date("0000-00-00 00:00:00");
                // des données ont été envoyées et on va pouvoir les stocker au niveau de notre model
                // debug($this->request->data);
                $this->Module->save($this->request->data);
                // On envoi notre message d'erreur
                $this->Session->setFlash("Le module " . $this->Module->title . " a bien été modifié !");
                // on va indiquer la clé qu'on a récupéré pour pouvoir faire la redirection
                $id = $this->Module->id;
                //debug($this->Post);
                // si les données ont bien été envoyées on fait un redirect ==> sert pour les boutons d'action de sauvegarde
                $this->redirect('admin/modules/index');
            } else {
                // Si on constate une erreur on envoi le setflash
                $this->Session->setFlash("Merci de corriger les différentes erreur !", 'error');
            }
        } else {
            // si on a un id on lance notre requete findFirst
            // on requete la bdd
            $this->request->data = $this->Module->findFirst(array(
                'conditions' => array(
                    'id' => $id
                )
            ));
        }
        $this->set($d);
        //debug($this->request);
    }
    function admin_delete() {
    }
}

2 réponses


Bonjour,

On peut voir ta fonction "objectToArray".

Cordialement

fabienc
Auteur

La voici

/**
 * Permet de convertir un objet en array
 */
function objectToArray($d) {
    if (is_object($d)) {
        // Gets the properties of the given object
        // with get_object_vars function
        $d = get_object_vars($d);
    }
    if (is_array($d)) {
        /*
         * Return array converted to object
         * Using __FUNCTION__ (Magic constant)
         * for recursive call
         */
        return array_map( __FUNCTION__ , $d);
    } else {
        // Return array
        return $d;
    }
}

J'ai trouvé sur le net, elle n'est pas de moi