Bonjour, voila j'ai suivis le tuto sur comment crée un MVC je suis au jous 3, tous se passe bien j'arrive a récupéré mes informations de Ma BDD, mais la je rencontre un probleme je bloque, dans mon site j'ai mis un lien pour telechargement d'un pdf voila la structure
dans le fichier view
<td>Programm
<td><a href=<?php echo '"../../download/'.$page->type.DS.$page->annee.DS.$page->programme.'" ';?> target="_blank" ><img src="../../images/images-css/PDF.png"></a></td>
j'explique le pdf se trouve dans: download/regionale($page->type/2014($page->annee)->/programme_2014.pdf,
j'usqu'ici rien de trés sorcier j'ai juste construit mon arboresence sachant que : download se trouve dans webroot jai larboresence suivante
webroot/download/regional/2014/desfichiersPDF
dans la racine de mon site jai les dossiers suivant :
config
controller
core
model
view
webroot
ce que je voudrais c'est que quant je click sur l'icone du pdf il m'ouvre le pdf directement (un href normal quoi ) bin c'est le petit gros probleme il le lien construit dans le href et le fait passé dans le ROUTER.php et lance la fonction loadcontroler voila le code de mon DISPATCHER et du Router
class Dispatcher
{
var $request; //variable
function __construct()
{
$this->request = new Request();
Router::parse($this->request->url,$this->request);
//print_r($this->request );
//intialisation du controller
$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 nomé :'.$this->request->action); //message d'erreur
}
//dynamiser lappel du controller
call_user_func_array(array($controller,$this->request->action),$this->request->params);
//autorender
$controller->render($this->request->action);
}
function error($message){
$controller = new Controller($this->request);
$controller->e404($message);
}
function loadController()
{
$name = ucfirst($this->request->controller).'Controller'; //convention d'ecriture nomController
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
return new $name($this->request);
}
<?php
/**
* pour traité les url recuperer
*/
class Router
{
/**
* permet de parser une url
* @param $url Url à parser
* @return tableau contenant les paramétres
**/
static function parse($url,$request)
{
$url = trim($url,'/');//supression des / avec la fonction trim
$params = explode('/',$url); //exploser l'url
print_r($params);
// la structure de l'url controlleur /action r et le tableau qui les contiendra
$request->controller = $params[0];
$request->action = isset($params[1]) ? $params[1] : 'index';
$request->params = array_slice($params, 2);
return true;
}
}
voila le lien
http://localhost/MonSite/download/regionale/2014/programme_2014.pdf
voila un print_r(params)
Array ( [0] => download [1] => regionale [2] => 2014 [3] => programme_2014.pdf )
et le die($url) donne
"download/regionale/2014/programme_2014.pdf"
resultas des courses quand je clic sur l'image du pdf jai cette affichage :
Warning: require(/var/www/html/MonSite/controller/DownloadController.php): failed to open stream: No such file or directory in /var/www/html/MonSite/core/Dispatcher.php on line 39
Fatal error: require(): Failed opening required '/var/www/html/MonSite/controller/DownloadController.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/MonSite/core/Dispatcher.php on line 39
j'espére ne pas m'etre trop etaler et que c'est claire, Ma question c'est comment faire pour savoir si on se rederige vers une page qui necessite un controller et une vue et une autre ou c'est juste un lien vers un document qu'on veut mettre en telechargement.psk j'ai remarque que sans le dossier 2014 je recuper le pdf normalement il s'affiche sans aucun problém mais desque je rajoute le dossier 2014 le lien et conciderer comme ci c'été controller/action/param1/param2
Mercii