Problème $this->model->find('all')

Par didz41600, il y a 13 ans


Bonjour,

Dans mon controller Posts, dans l'index je demande a récupéré toute les données de la table Posts et il ne me renvoie rien, il y a bien le model de présent et dans le Debug SQL je voie bien qu'il est dans la bonne table.

<?php

// Mon controller posts 
    class PostsController extends AppController{

        function index(){
          $datas = $this->Post->find('all');
          debug($datas);
        }
} 
//Model post
<?php
    class Post extends AppModel{

    }

?>

et enfin mon query

Nr  Query   Error   Affected    Num. rows   Took (ms)
1   SELECT `Post`.`id`, `Post`.`title`, `Post`.`slug`, `Post`.`content`, `Post`.`id_author`, `Post`.`id_categorie`, `Post`.`created`, `Post`.`date_edit`, `Post`.`online` FROM `1_dev`.`posts` AS `Post` WHERE 1 = 1

Donc je voulais savoir d'ou pouvais venir ce problème de ne rien afficher.

Merci

37 réponses

palmer08, il y a 13 ans

Après le <?php, tu n'es pas sensé mettre App::uses('AppController, 'Controller'); ?

didz41600, il y a 13 ans

Tu veut dire dans le Controller ? si c'est le cas même dans le controller par défaut il n'y est pas et dans mon controller qui marche il n'y est pas non plus.

zenkiai, il y a 13 ans

Je ne suis pas sur que cela soit le même cas que toi mais essaye :
Lien

didz41600, il y a 13 ans

C'est une methode brut je vais essayer, on verra bien :/

didz41600, il y a 13 ans

Cette méthode n'a rien changer :/

capitalechoplex, il y a 13 ans

Le debug de ton core est bien à 2 ou 1 ?

didz41600, il y a 13 ans

Le debug est bien a 2

zenkiai, il y a 13 ans

Tu es sur quel version de cakephp ?

didz41600, il y a 13 ans

J'ai la version 2.1 de cakephp.

Je tien a ajouter que ce problème ce produit que sur certain controller, j'ai d'autre controller comme celui Users ou il n'y a pas de problème.

zenkiai, il y a 13 ans

Depuis la version 2, je mets systématiquement

App::uses('AppController, 'Controller')

dans mes controlleurs et

App::uses('Controller', 'Controller');

dans mon AppController.
Dans mes models, je met ceci

App::uses('AppModel', 'Model');

et

App::uses('Model', 'Model');

dans mon AppModel

Ceci étant dit si cela fonctionne avec certains, il n'y a pas de raison mais cela ne coute rien d'essayer à part du temps...

didz41600, il y a 13 ans

Donc, j'ai ajouter ce que tu ma dit et rien ne change toujours imposible de voir les informations

zenkiai, il y a 13 ans

Si tu fais un debug dans ta vue et non dans le controller, cela fonctionne-t-il ?
ajoute un

die();

, on ne sait jamais. Une fois je ne voyais pas mon debug, caché derrière une div...

didz41600, il y a 13 ans

Rien, j'ai déjà tester dans ma vue et rien :/ commence a plus comprendre

zenkiai, il y a 13 ans

Je séche aussi...
C'est le seul controller avec lequel tu as ce problème ?

didz41600, il y a 13 ans

non tout mes nouveau controller qui étais celui des categories

zenkiai, il y a 13 ans

je ne comprends pas, tous les debug des nouveaux controller ne fonctionnent pas ? Sauf celui des catégories

didz41600, il y a 13 ans

en faite mon controller categories que j'avais fait après marcher bien, mais quand j'en crée d'autre comme pages, posts, ou autre rien

Gregory, il y a 13 ans

Tu as execute ta requête générée dans phpmyadmin pour voir si cela te renvoi bien des données?

zenkiai, il y a 13 ans

essaye avec un

debug($datas,false);
didz41600, il y a 13 ans

Oui, dans phpmyadmin les résultats sont bien présent après la requête

didz41600, il y a 13 ans

Avec t'on debug, j'obtient mes resultats, mais sans rangement en tableau.

/app/Controller/PostsController.php (line 10) ########## DEBUG ########## array( 'Post' => array( 'id' => '1', 'title' => 'Ma premi?re news', 'slug' => 'ma_premier_new', 'content' => '
Hello
C'est ma premi?re news dans ce site. :)
Greaaat
', 'id_author' => '8', 'id_categorie' => '1', 'created' => '2012-11-01 12:02:27', 'date_edit' => '0000-00-00 00:00:00', 'online' => true ) ) ###########################
zenkiai, il y a 13 ans

Le problème réside alors dans l'encodage html...

didz41600, il y a 13 ans

oui mais dans les autres controller, il n'y a pas de problème. Le debug normal tout est afficher correctement.

zenkiai, il y a 13 ans

Tes fichiers sont bien tous encodés en UTF-8 sans BOM ?

zenkiai, il y a 13 ans

En gros tu as très pu enregistré tes controllers qui fonctionne avec le debug en UTF-8 sans BOM et ceux qui ne fonctionne pas autrement..
c'est un piste comme une autre, mais vu que le debug($datas,false); fonctionne, c'est une piste....

didz41600, il y a 13 ans

Mes documents sont bien encoder en UTF8 sans BOM, un print_r donne mieux que le debug, mais une fois dans la vue il n'y a rien qui s'affiche :/ et aussi un set ne renvoie rien a la vue, ( en gros il ne voie rien comme le debug)

zenkiai, il y a 13 ans

dsl je seche....

didz41600, il y a 13 ans

Merci quand même j'espere qu'il y auras des personnes avec la solution :),

ps: du nouveau je vient de crée un controller avec une base de donnée bidon pour tester et la il me renvoie bien les infos ><' et je suppose que le problème ce produit que sur le controllers posts

Gregory, il y a 13 ans

modifies ton enregistrement directement en base pour supprimer les accents et ainsi tu pourras tester si ton problème vient bien de la

didz41600, il y a 13 ans

Cela ne change rien au problème même sans accents, mais ce que je comprend moins c'est quand je fait des controllers avec des grand nom comme ctdetests ( pour essayer de trouver le bug ), il fonctionne sans problème.

didz41600, il y a 13 ans

Je sais de quoi vient mon problème, quand je rentre des accents dans la table de ma base de donnée, il ne le renvoie pas et affiche une erreur.

Des idées de correction ?

zenkiai, il y a 13 ans

Tu as mis quoi comme charset dans ta meta ? et quel interclassement dans MySql ?

didz41600, il y a 13 ans

Pour l'interclassement c'est du "latin1_swedish_ci" et site c'est "charset=utf-8"

zenkiai, il y a 13 ans

En gros si ta meta est en UTF8 comme ceci

<?php echo $this->Html->charset('UTF-8'); ?>.

Tu dois mettre l'interclassement de ta BDD en UTF8_general_ci
sinon tu mets en ISO-8859-1 ton charset

didz41600, il y a 13 ans

Le mieux entre les deux c'est l'UTF8 ?

zenkiai, il y a 13 ans

Pour ma part oui, de plus tu as encodé tous tes fichiers en utf8 sans Bom, autant continuer dans ce sens

didz41600, il y a 13 ans

Oui, c'est sur, je teste et je redit sa :)

Donc après avoir mis tout en UTF-8 et avoir ajouter la ligne

'encoding' => 'utf8'

dans database.php, tout marche.

Merci