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.

Mon routage

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

Ma hompeage

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

Précision

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

4 réponses


Curvata
Réponse acceptée

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"

Il faut envoyer toutes tes requêtes vers ton "index.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:

  • Soit je reste sur un vhost avec le dossier public et du coup je devrais sans aucun doute partir sur un .htaccess
  • Soit je dégage le vhost, je mets à la racine ce que j'avais dans public et donc le index.php

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.