proble Notice: Undefined offset:1 tuto jour 2

Par lexis parker, il y a 10 ans


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

Carouge10, il y a 10 ans

Bonjour,
L'erreur complète nous aiderais mieux

lexis parker, il y a 10 ans

Mercie bonjour Carouge10

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

Carouge10, il y a 10 ans

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.

lexis parker, il y a 10 ans

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

skp, il y a 10 ans

Bonjour,
Après

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

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

Huggy, il y a 10 ans

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

lexis parker, il y a 10 ans

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

Carouge10, il y a 10 ans

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

Huggy, il y a 10 ans

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