Je n'arrive pas a afficher ma vue

Diarra01

Diarra01 Le 11 février 2021 à 14:21

Bonsoir les doyens, j'ai un soucis lors de mon exécution de la vue dans mon models MVC en suivant un tuto mais je sui bloqué ```php Mon Router <?php

//Requerir la vue accueil
require_once ("views/View.php");

//Gestion des requetes de l'user selon l'action
class Router
{
    //Gestion des parametres
    private $_ctrl;
    private $_view;

    //Fct gestion des requetes
    public function routeReq()
    {
        try 
        {
            //Charger les classes automatiques
            spl_autoload_register(function($class){
                require_once ('models/'.$class.'.php');
            });

            //creer une url vide
            $url = '';

            //Determiner le controller selon url
            if (isset($_GET['url'])) 
            {
                $url = explode('/', filter_var($_GET['url'], FILTER_SANITIZE_URL));

                //recuperer le 1er paramètre de l'URL
                $controller = ucfirst(strtolower($url[0]));

                //Recuper le bon cotroller avec son path
                $controllerClass = "Controller".$controller;
                $controllerFile  = "controllers/".$controllerClass.".php"; 

                if (file_exists($controllerFile)) 
                {
                    require_once ($controllerFile);
                    $this->_ctrl =  new $controllerClass($url);
                }
                else 
                {
                    throw new Exception("Page Introuvable", 1);
                }
            }
            else 
            {
                require_once ('ControllerAccueil.php');
                $this->_ctrl =  new ControllerAccueil($url);
            }
        } 
        catch (Exception $e) 
        {
            $errorMsg = $e->getMessage();
            $this->_view = new View('Error');
            $this->_view->generate(array('errorMsg' => $errorMsg));
        }
    }
}

ModelQualification <?php

//Recupere les qualififcation depuis ma bdd

class Qualification { private $_id; private $_title; private $_content; private $_slug; private $_image; private $_date;

   //constructeur
   public function __construct(array $data)
   {
       $this->hydrate($data);
   }

    //Hydratation
    public function hydrate(array $data)
    {
        foreach ($data as $key => $value) 
        {
            $method = 'set'.ucfirst($key);
            if (method_exists($this, $method)) 
            {
                $this->$method($value);
            }
        }
    }

   //Setters
    public function setId($id)
    {
       $id = (int) $id;
       if($id > 0)
       {
           $this->_id = $id;
       }
    }

    public function setTitle($title)
    {
        if(is_string($title))
        {
            $this->_title =  $title;
        }
    }

    public function setContent($content)
    {
        if (is_string($content)) 
        {
            $this->_content = $content;
        }
    }

    public function setSlug($slug)
    {
        if (is_string($slug)) 
        {
            $this->_slug = $slug;
        }
    }

    public function setImage($image)
    {
        $this->_image = $image;
    }

    public function setDate($date)
    {
        $this->_date = $date;
    }

    //Getters
    public function id()
    {
        return $this->_id;
    }

    public function title()
    {
        return $this->_title;
    }

    public function content()
    {
        return $this->_content;
    }

    public function slug()
    {
        return $this->_slug;
    }

    public function image()
    {
        return $this->_image;
    }

    public function date()
    {
        return $this->_date;
    }

}

Model <?php

//Methode commune aux autres classes pour son extension
class Model 
{
    private static $DB;

    private static function setDB()
    {
        //Instancie la connexion 
        self::$DB = new PDO("mysql:host=localhost;dbname=eventplaceafrik_db;charset=ut8mb4", "root","");
        self::$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    }

    //Recupere la connexion a la bdd
    protected function getDB()
    {
        if (self::$DB == null) 
        {
            self::setDB();
            return self::$DB;
        }
    }

    //Creation de la méthode de recup de tous les contenus
    protected function getAll($table, $obj)
    {
        $this->getDB();
        $var = [];
        $req = self::$DB->prepare('SELECT * FROM ' .$table. ' ORDER BY id desc');
        $req->execute();

        //Une boucle qui contiendra les datas
        while ($data = $req->FETCH(PDO::FETCH_ASSOC)) 
        {
            $var[] = new $obj($data);
        }
        return $var;
        $req->closeCursor();
    }
}

View.php <?php

//Recuperer la vue de manière securisé

class View
{
    //Fct private 
    private $_file;
    private $_t;

    public function __construct($action)
    {
        $this->_file = 'views/view'.$action.'.php';
    }

    //Genere et affiche la vue
    public function generate($data)
    {
        //partie specifique de la vue
        $content = $this->generateFile($this->_file, $data);

        //Template
        $view = $this->generateFile('views/template.php', array('t'=> $this->_t, 'content' => $content));
        echo $view;
    }

    //Genere un fichier et renvoie la vue
    private function generateFile($file, $data)
    {
        if(file_exists($file))
        {
            extract($data);

            //Declenche la mise en tampon
            ob_start();
            require $file;
            return ob_get_clean();
        }
        else
        {
            throw new Exception("Fichier " .$file. " introuvable");
        }
    }
}

viewAccueil <?php foreach ($qualifications as $qualification) : ?>

<h1><?= $qualification->title() ?></h1>
<b><?= $qualification->content() ?></b>
<p><?= $qualification->slug() ?></p>
<img src="?= $qualification->image() ?>" alt="?= $qualification->$title() ?>">
<time>?= $qualification->date() ?></time>

<?php endforeach; ?>

Diarra01

Diarra01 Le 11 février 2021 à 15:05

Merci je viens a peine de voir mes erreurs c'était ici

`self::$DB = new PDO("mysql:host=localhost;dbname=eventplaceafrik_db;charset=ut8mb4", "root",""); self::$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

    =========> charset=utf8mb4`
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte