IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Problème pour déterminer l'ARO


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Problème pour déterminer l'ARO
    Bonjour,

    Je suis actuellement le tutoriel du CakePHP Cookbook afin de créer un blog pour m'entrainer et ainsi prendre en main la version 2 du framework. J'ai donc créé un espace membre afin de m'entrainer avec les ACL. Je rencontre cependant un problème : une fois que je suis connecté et que j'accède à une page protégée, j'ai le message d'erreur suivant :

    AclNode::node() - Couldn't find Aro node identified by "Array ( [Aro0.model] => User [Aro0.foreign_key] => 12 ) "
    La source du problème est toute trouvée : il cherche le modèle User alors que j'ai spécifié de partout où je pouvais qu'il fallait utiliser le modèle Member (j'ai une table members et un modèle Member bien évidemment). Dans le tutoriel, c'est le modèle User qui est utilisé, j'ai donc du glisser ce modèle dans mon code, mais impossible de savoir où. J'ai tout repassé au peigne fin, je ne vois pas où ce « User » a pu se glisser. J'utilise partout « Member ».

    Dans ma table aros, c'est bien Member qui est stocké dans la colonne model. Je ne vais pas copier tous mes codes ici, ça risque de surcharger la page, donc si vous pouviez m'indiquer quelques pistes pour débusquer ce problème, je posterais les fichiers nécessaires.

    Merci d'avance pour toute réponse !

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Points : 74
    Points
    74
    Par défaut
    Salut,

    J'arrive pas à avoir ton erreur tu peux me montrer ton model et ton controller de member s'il te plait?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Salut ch0c4,

    Voici mon MemberController :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    class MembersController extends AppController
    {
        public $scaffold;
     
        public function beforeFilter()
        {
            parent::beforeFilter();
            $this->Auth->allow('*');
        }
     
        public function login()
        {
            if ($this->Session->read('Auth.Member'))
            {
                $this->Session->setFlash('Connexion réussie');
                $this->redirect('/CakePHP/', null, false);
            }
     
            if ($this->request->is('post'))
            {
                if ($this->Auth->login())
                {
                    $this->redirect($this->Auth->redirect());
                }
                else
                {
                    $this->Session->setFlash('Paire identifiant/mot de passe incorrecte');
                }
            }
        }
     
        public function logout()
        {
            $this->Session->setFlash('Déconnexion réussie');
            $this->redirect($this->Auth->logout());
        }
    }
    Et voici mon modèle Member :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    App::uses('AuthComponent', 'Controller/Component');
     
    class Member extends AppModel
    {
        public $belongsTo = 'Group';
        public $actsAs = array('Acl' => array('type' => 'requester'));
     
        public function bindNode($member)
        {
            return array('model' => 'Group', 'foreign_key' => $member['Member']['group_id']);
        }
     
        public function parentNode()
        {
            if (!$this->id && empty($this->data))
            {
                return null;
            }
     
            if (isset($this->data['Member']['group_id']))
            {
                $groupId = $this->data['Member']['group_id'];
            }
            else
            {
                $groupId = $this->field('group_id');
            }
     
            if (!$groupId)
            {
                return null;
            }
            else
            {
                return array('Group' => array('id' => $groupId));
            }
        }
     
        public function beforeSave()
        {
            $this->data['Member']['password'] = AuthComponent::password($this->data['Member']['password']);
            return true;
        }
    }
    Merci de ta participation !

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Points : 74
    Points
    74
    Par défaut
    Si tu as cake2, ajoute cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public $name = 'Member'
    dans ton model 'Member'

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Je viens de l'ajouter, et l'erreur est toujours présente...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Personne n'aurait une piste pour résoudre ce problème ?

    Merci d'avance !

  7. #7
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Je pense que tu dois créer les OCA pour les contrôleurs / etc avant vous,
    Régles aussi le niveau de débogage à 2 dans app / config / core.php pour obtenir de meilleurs messages d'erreur.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Bonjour Jcpan,

    Le niveau de débuggage est déjà à 2. La seule information supplémentaire que je n'ai pas postée est le stack trace.

    Pour les OCA dans les contrôleurs, je dois avouer ne pas savoir ce que c'est, j'ai du louper quelque chose. Une recherche « oca cakephp » dans google ne me retourne rien d'intéressant. Saurais-tu m'expliquer de quoi il s'agit ou alors aurais-tu un lien qui détaille ce que c'est s'il-te-plait ?

    Merci !

  9. #9
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Essayes ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    App::uses('AuthComponent', 'Controller/Component');
     
    class Member extends AppModel
    {
        public $belongsTo = 'Group';
        public $actsAs = array('Acl' => array('type' => 'requester'));
        $member= AuthComponent::user();
        ...
    Sinon est ce que tu as des Notices (Undefined index) ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Salut Jcpan,

    Je ne comprends pas trop ton code... C'est quoi cette variable « $member » au milieu de la classe ? Où dois-je la placer ?

    Sinon, non je n'ai pas de notice qui s'affiche.

    Merci !

Discussions similaires

  1. Gros problème pour chaine str déterminer par fonction
    Par MediaVistaIntel dans le forum Général Python
    Réponses: 6
    Dernier message: 16/06/2012, 16h34
  2. [fileupload] problème pour parser la requete
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 12
    Dernier message: 24/04/2008, 12h02
  3. Réponses: 9
    Dernier message: 30/01/2007, 21h03
  4. Réponses: 3
    Dernier message: 29/08/2003, 10h57
  5. Problème pour récupérer la clé primaire
    Par caramel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2003, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo