Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Router.php

<?php
class Router{
    static function parse($url){
        $url = trim($url,'/');
        $params = explode('/',$url);
        $r = array(
            'controller' => $params[0],
            'action'     => $params[1]
        );
    }
}
?>

Décrivez ici votre code ou ce que vous cherchez à faire
Dispatcher

<?php
class Dispatcher{

    var $request;

    function __construct(){
        $this->request = new Request();
        Router::parse($this->request->url);
    }
}

?>

Request.php

<?php
class Request{
    public $url; // url appellé par l'utilisateur
    function __construct(){
        $this->url = $_SERVER['PATH_INFO'];
    }
}
?>

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Notice: Undefined offset: 1 in 

9 réponses


Bonjour,
L'erreur complète nous aiderais mieux

Mercie bonjour Carouge10

Notice: Undefined offset: 1 in C:\wamp\www\MonSite\Site\core\Router.php on line 8

Cela veux dire qu'il n'y pas de donner à l'index 1 de votre tableau.
Faite un var_dump de params et vous verrez qu'il n'y a pas d'action.

ok merci mais je sais pas quoi faire si t a une idée

Bonjour,
Après

$params = explode('/', $url);

Il faut t'assurer que ton Array "$params" contient bien l'index 1

Essaye REQUEST_URI plutot que PATH_INFO
PATH_INFO nécessite une modif d'Apache pour être renseigné

bonjour skp
offt losque je tape cet url http://localhost/MonSite2/Site/pages/view/index
avec c code

<?php
class Router{
    static function parse($url){//,$request
        $url = trim($url,'/');
        $params = explode('/', $url);
        print_r($params);
            }
}
?>

j obtient

Array ( [0] => pages [1] => view [2] => index )

ici avec ce code

<?php
class Router{
    static function parse($url){//,$request
        $url = trim($url,'/');
        $params = explode('/', $url);
        $r = array(
            'controller' => $params[0],
            'action'     => $params[1]
        );
    }
}
?>

et c url http://localhost/MonSite2/Site/pages/
j ai cet erreur Notice: Undefined offset: 1 in C:\wamp\www\MonSite2\Site\core\Router.php on line 8

la fonction chercher le paramètre action qui est censé être après "pages" et là il n'y a rien.

Dans le tuto il est indiqué

'action' => isset($param[1]) ? $params[1] : 'index'

donc s'il n'y a pas d'action, ce sera 'index' par défaut