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