Bonjour à tous,

Je débute avec le framework cakePhp et actuellement je regarde 'Developper un site avec cakePHP jour 1'

J'obtiens une erreur me disant :

Strict (2048): Declaration of Post::afterFind() should be compatible with Model::afterFind($results, $primary = false) [APP/Model/Post.php, line 2]

et voici mon post.php :

<?php
class Post extends AppModel{

    public function afterFind($data){
        foreach ($data as $k => $d) {
            if(isset($d['Post']['slug']) && isset($d['Post']['id'])){
                $d['Post']['link']=array(
                    'controller' => 'pages',
                    'action' => 'show',
                    'id' => $d['Post']['id'],
                    'slug' => $d['Post']['slug']
                    );
            }
            $data[$k] = $d;
        }
        return $data;
    }
}

J'ai essayé en mettant : afterFind($results, $primary = false)
à la place de afterFind($data) mais cela ne focntionne pas, j'obtiens d'autres erreurs et ma page n'apparait plus

Si quelqu'un pouvait m'aider, j'ai cherché sans trouver de solution.

Merci

4 réponses


Thebrer
Réponse acceptée

Tu as just à définir ta fonction comme ceci :

 public function afterFind($data, $primary = false)

et tout devrait marcher. L'erreur est quand même bien détaillée en anglais.

Grafikart
Réponse acceptée

Depuis une certaines version de PHP les fonction hérité d'un parent doivent avoir la même signature (les mêmes arguments) ce qui n'était pas le cas avant. Donc si tu choisis de redéfinir afterFind tu dois lui passer les mêmes arguments.

Après 3,46 secondes de google : http://www.grafikart.fr/forum/topics/6429

Polo7
Auteur

merci de votre réponse,

j'etais tombé sur ce lien aussi mais je n'ai pas compris la solution,
est-il possible d'etre plus clair?
merci