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. :)
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
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 :)
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
J'avais pas vu que tu avais récupéré les sources. a part un problème de htaccess peux tu les poster ici?
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.
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.
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 :)