Bonjour,
Je rencontre une problème avec mon routage et AltoRouter. Tout semble fonctionner puisqu'il me route correctement la homepage, mais quand je créé le lien vers d'autres page j'ai un retour me disant que l'url n'existe pas.
<?php
require '../vendor/autoload.php';
use Symfony\VarDumper\VarDumper;
$uri = $_SERVER['REQUEST_URI'];
$router = new AltoRouter();
$router->map('GET', '/', 'home', 'home');
$router->map('GET', '/creation', 'createuser', 'creation');
$router->map('GET', '/connexion', 'connectuser', 'connexion');
$match= $router->match();
if($match !== null){
if (is_callable($match['target'])){
call_user_func($match['target'], $match['params']);
}else{
$params = $match['params'];
require "../templates/{$match['target']}.php";
};
};
<h1>HomePage</h1>
<a href="<?= $router->generate('creation')?>">Créer un utilisateur</a>
<a href="<?= $router->generate('connexion')?>">Connecter un utilisateur</a>
<?php
dump($match);
Je tiens à préciser que les fichiers php sont bien dans /templates (au même niveau que home) et que leur nom sont les même que dans le script.
Je précise aussi que la homepage s'affiche bien correctement, mais les liens eux ne semble pas rediriger vers createuser.php ou connectuser.php
Il arrive bien au-dessus car tu affiches correctement "home.php" le problème c'est cas partir de "home.php" la requète ne repasse pas par "index.php" donc il ne connais pas le chemin de tes fichiers "createuser.php" ou "connectuser.php"
En fait le problème vient pas vraiment de là. En gros j'ai un vhost qui me ramène vers un dossier public dans lequel j'ai mon index.php
Donc du fait que le $_SERVER[DOCUMENT_ROOT]
soit /public et non / alors mon script n'arrive pas à aller au dessus de /public puisque pour lui il n'existe pas.
Comme je bosse sur wamp, j'ai 2 choix:
Ce que j'aimerai faire c'est un système que je puisse balader de server en server (d'un wamp sur un lamp) et je ne sais pas quelle est la meilleure façon de faire.
Merci Curvata et oui il arrive bien, il me suffisait d'écrire un .htaccess correcte, ce qui n'était pas le cas.
Merci pour ton aide.