Bonjour, sa fait plus de 24h que je gratte, gratte à la recherche de solution pour 'Développer un site : Jour 2, La structure PHP' **Donc pour le .htaccess [url=http://]http://www.grafikart.fr/forum/topic/2420[/url] [**C'est bon**] **Pour le PATH_INFO j'ai remplacez : [**C'est bon aussi**] [code]1 $this->url = $_SERVER['PATH_INFO']; Par : 1 $this->url = isset($_SERVER['PATH_INFO'])?$_SERVER['PATH_INFO']:'/';[/code] Et la maintenant j'ai des erreur; **Warning: require** et **Fatal error: require()** Image = > [url=http://www.hostingpics.net/viewer.php?id=543968site.png]Ici[/url] [img]http://img15.hostingpics.net/pics/317771site.png[/img] Je me suis mis prémium pour copier le code et être sur que je ne me trompais pas dans les syntaxes. Merci d'avance pour votre aide. :)

12 réponses


Djiins
Réponse acceptée

ok donc ta redirection fonctionne bien
et si tu tape localhost/pages/view ?

pense quand même à changer cette ligne

$name = ucfirst($this->request->Controller).'Controller';

avec un cminuscule sur le controller après request car ca m'avait posé aussi des problèmes

PuLSor24
Auteur
Réponse acceptée

Salut, donc, je si fais http://localhost/pages/ je tombe sur la page d’accueil
si je fais localhost/pages/view Page introuvable
je pence que c'est bon ?
Dsl mais les htaccess c'est pas mon fort :s

Djiins, merci pour ton aide, j’espère ne plus avoir affaire a toi :p en bien bien sur lol

Merci hin :)

salut tu peux nous montrer ton dispatcher stp

PuLSor24
Auteur

C'est le même que dans le tuto.

<?php
/**
* Dispatcher
* Permet de charger le controller en fonction de la requête utilisateur
**/
class Dispatcher{

    var $request;   // Object Reques
    /**
    * Fonction principale du dispatcher
    * Charge le controller en fonction du routing
    **/
    function __construct(){
        $this->request = new Request(); 
        Router::parse($this->request->url,$this->request); 
        $controller = $this->loadController();
        if(!in_array($this->request->action , get_class_methods($controller)) ){
            $this->error('Le controller '.$this->request->controller.' n\'a pas de méthode '.$this->request->action); 
        }
        call_user_func_array(array($controller,$this->request->action),$this->request->params); 
        $controller->render($this->request->action);
    }
    /**
    * Permet de générer une page d'erreur en cas de problème au niveau du routing (page inexistante)
    **/
    function error($message){
        header("HTTP/1.0 404 Not Found");
        $controller = new Controller($this->request); 
        $controller->set('message',$message); 
        $controller->render('/errors/404');
        die(); 
    }
    /**
    * Permet de charger le controller en fonction de la requête utilisateur
    **/
    function loadController(){
        $name = ucfirst($this->request->controller).'Controller'; 
        $file = ROOT.DS.'controller'.DS.$name.'.php'; 
        require $file; 
        return new $name($this->request);  
    }

}

Merci

salut moi j'ai ligne 40

$name = ucfirst($this->request->Controller).'Controller';

après request le controller commence par un C majuscule

test ca

PuLSor24
Auteur

Non sa ne change rien, moi aussi j'ai cru que sa venais de ça mais non.

J'avais pas vu que tu avais récupéré les sources. a part un problème de htaccess peux tu les poster ici?

PuLSor24
Auteur

C'est les même que dans la video.

RewriteEngine On
RewriteRule (.*) webroot/$1 [L]

et le 2em

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]

ps: j'ai même essayer avec easyPhp, mais sa na rien changer ..
ce que je ne comprend pas c'est que dans la video, sa à l'aire facile mais y a rien qui vas :s
Comment il arrive à faire fonctionner le site avec son code et que nous on rencontre des problèmes ?
J'ai même un serveur dédier chez ovh, si je le poste, y a rien qui va :s
Je ne pensais pas que le php allait me poser autan de problème, je connaissais le php qui fonctionnais même avec des beug :p mais la non.

merci

oui en effet c bizzare moi j'ai fini par résoudre les problèmes mais ca a pris du temps aussi

je viens de me enrdre compte qu'en fait dans le dossier controller tu as que le Pages controller donc c ton action qui ne passe pas

si tu essaye localhost/pages/view par exemple ca donne quoi ?

parce que moi si je tape http://localhost/site/ soit la racine de mon site, dans les logs de apache j'ai la même erreur que toi mais je n'affiche pas le erreurs et je suis bien sur index.php

dans la page index du webroot en haut avant :

<?php
define('WEBROOT',dirname( __FILE__ ));
define('ROOT' ,dirname(WEBROOT));
define('DS' ,DIRECTORY_SEPARATOR);
define('CORE' ,ROOT.DS.'core');
define('BASE_URL' ,dirname(dirname($_SERVER'SCRIPT_NAME'])));

require CORE.DS.'includes.php';
new Dispatcher();
?>

juste avant <?php met un message genre salut et regarde s'il s'affiche sur ta page d'erreur si oui c que ton url rewriting fonctionne et que tu est redirigé vers index comme prévu. et si tu tape ca dans ta barre d'url tu devrais avoir la vue qui s'affiche localhost/tonsite(ou rien si tu est a la racine)/pages/view .

Dis moi ce qu'il en est

et si ça fonctionne comme ça c normal t'en fait pas sur wamp il te suffit de décocher display error et normalement tu n'as plus de messages d'erreur mais c mieux de les avoirs pour debugger.

PuLSor24
Auteur

Ouai, j'ai bien le salut qui s'affiche, il se rand bien jusque la.
j'ai bau taper n'importe quel lien, même des erronée, y a notre salut qui s'affiche.

PuLSor24
Auteur

J'ai une dernière question, comment faut-il faire pour que quand je tape l'adresse de mon site (localhost) sa rediriger vers localhos/pages ?
c'est au niveau du .htaccess ?

un truque dans le gore ?

RewriteEngine On
RewriteRule (.*) localhost/pages/$1 [L]

Merci

oui je pense que ca doit etre quelque chose dans ce gout :) puisque si tu veux rediriger vers l'index du webroot tu envois vers webroot il semble logique que pour pages tu envois vers pages :)

bonne continuation en tout cas :)