Bonjour à tous.

Voilà, en fait j'ai un soucis avec ce tutoriel,du coup je suis un peu bloqué pour passer aux suivants de cette série.
J'avais commencé par suivre le tutoriel en éditant les pages nécessaires une à une, mais j'avais des erreurs bien que je vérifiais au fur et à mesure si je n'avais pas fait d'erreurs dans le codage.
Suite à quelques rectifications d'erreurs, et en ayant vérifié que j'avais bien les mêmes codes que sur la vidéo du tutoriel, j'avais toujours des erreurs que je ne comprenais pas.

C'est pourquoi je me suis décidé à passer en mode prémium sur le site et de télécharger les sources du tutoriel afin d'y voir plus clair.

Je télécharge donc les sources mises à disposition, je les intègres en totalité sur Wamp, je vérifie la base de données dans le fichier "database.php", je supprime la table que j'avais faite, puis je charge le fichier "tuto.sql" fourni dans les sources.

Je lance l'application et j'ai des erreurs dès le début :
Cliquez pour voir l'image du fond d'écran contenant les erreurs

J'ai essayé par la suite d'afficher une des pages en suivant les liens, mais à chaque fois je me retrouvais avec une page blanche et l'inscription suivante : No input file specified..

Je souhaiterais donc savoir s'il est normal que le script d'un tutoriel ne fonctionne pas, même si j'en ai téléchargé les ressources et si c'est normal, que faut t'il faire comme modifications pour que celui-ci fonctionne parfaitement.

<u>Pour information :</u>
Je suis en local, j'utilise Wampserver comme client PHP et donc Phpmyadmin comme serveur Sql.
Wampserver utilise PHP version 5.4.
Je suis sur Windows Vista.

Je vous remercie d'avance pour vos réponses.

Cordialement, Lartak.

9 réponses


salut,

C'est la 1ère fois que tu utilises cakephp?

si c'est le cas, vérifie que rewrite_module dans les modules apache que ce soit bien coché

Lartak
Auteur

Ce n'est pas la première fois, à vrai dire j'ai commencé depuis peu avec CakePHP, mais je suis sur que ça ne vient pas du rewriting étant donné que j'ai déjà utilisé la réécriture des url en utilisant PHP sans framework.

Il est donc impossible que le soucis vienne de là, si c'était le cas je ne me serais pas permit de poster sur le forum, je peux te le certifiait.

Bien que j'utilise depuis peu le framework de CakePHP, ça fait plus de 4 ans que j'utilise le codage PHP et l'utilisation du rewriting , que ce soit en local avec Wampserver ou en ligne sur hébergeur payant.

C'est vrai que j'ai un peu de mal avec CakePHP, étant donné que ça ne fait pas longtemps que j'utilise le POO, mais je m'y connais quand même assez bien en language PHP.

Je peux donc t'assurer que mon soucis ne vient pas de là.

Mais je te remercie quand même pour ton intervention. ;)

As tu bien mis le .htaccess à la racine? Car comme c'est un fichier caché, il se peut qu'il n'ait pas été téléchargé lorsque tu as tout mis sur WAMP. Sinon ajoute un "/" dans chaque redirection des 3 .htaccess de cakePHP.

Lartak
Auteur

J'ai bien les 3 fichiers ".htaccess", 1 à la racine, le second dans app et le 3ème dans webroot.

Concernant l'ajout des ajouts des "/", je suppose que tu parles de ceci :

/**
 * To configure CakePHP *not* to use mod_rewrite and to
 * use CakePHP pretty URLs, remove these .htaccess
 * files:
 *
 * .htaccess
 * /app/.htaccess
 * /app/webroot/.htaccess
 *
 * And uncomment the App.baseUrl below:
 */

Si c'est bien de ça que tu veux parler, étant donné que j'ai bien les 3 ".htaccess", dois-je faire quelque chose dessus ?
Pour information, j'ai bien l'url qui s'affiche sous cette forme : http://localhost/CakeSite/page/mon-premier-titre-1 , mais comme je l'ai dit dans mon message principal, je n'ai qu'une page blanche qui s'affiche avec la notification suivante en haut de la page : No input file specified.
Je ne pense donc pas que le soucis vienne du "rewrite" ou des ".htaccess".

Merci en tout cas pour vos réponses.

On peut voir ta fonction afterFind de Post.php?
Pour le missing method, bah, il dit que la méthode display() n'existe pas dans Controller/PagesController.php... Donc faut modifier ça dans le Config/routes.php

Lartak
Auteur

Pour information, je me répète, ce sont les sources du tutoriel, il ne devrait donc pas y avoir d'erreur.

<u>La fonction <strong>afterFind</strong> :</u>

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;
    }

Pour ce qui concerne la méthode display() , Grafikart dit dans le tutoriel qu'elle n'est pas nécessaire.

<u>Les routeurs dans le fichier <strong>routes.php</strong> :</u>

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
    Router::connect('/page/:slug-:id',array('controller'=>'pages','action'=>'show'),array('pass'
            => array('id','slug'), 'id'=>'[0-9]+','slug' =>'[a-z0-9\-]+'));

Oui, quand le controller Pages n'est pas crée, display() n'est pas nécessaire mais s'il l'est, il est nécessaire.
Essaye de mettre avant ton foreach :

parent::afterFind($data);
Lartak
Auteur

Je viens de tester, mais aucun changement.

public function afterFind($data){
        parent::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;
    }
Lartak
Auteur

En fait, j'ai bien le "rewrite_module" d'activé, coché dans le menu via l'icone de Wampserver et la ligne "LoadModule rewrite_module modules/mod_rewrite.so" sans le "#" en début de phrase.
Mais j'ai remarqué en re installant CakePHP, que j'ai la mention suivante en page d'accueil : URL rewriting is not properly configured on your server.
Du coup j'ai suivi le lien pour configurer correctement mon rewriting sur le "httpd.conf" d'appache.
J'ai donc fait la manip suivante :

<Directory />
    Options FollowSymLinks
    AllowOverride All
# Order deny,allow
# Deny from all
</Directory>

J'ai également vérifié que le contenu des ".htaccess" soit le même que ce qui est affiché dans la page conduite dans le lien.
Mais la mention est toujours affichée.

Ce que je ne comprend pas, c'est que j'ai déjà utilisé le rewriting avant d'utiliser CakePHP et que je n'avais pas de problème avec la ré-écriture des URL's et la redirection.