Fatal error: Uncaught Error: Call to a member function ajoutTicket() on null [Résolu]

Signaler
Messages postés
37
Date d'inscription
samedi 10 février 2018
Statut
Membre
Dernière intervention
22 juillet 2020
-
Messages postés
37
Date d'inscription
samedi 10 février 2018
Statut
Membre
Dernière intervention
22 juillet 2020
-
Bonjour,

j'ai essayer de rajouter l'insertion d'un ticket(article) mais cela ne marche pas. alors voilà.

<?php
/**
 * CLASS APPEL CONTRÔLEUR, C'EST CETTE ACTION QUI VA GÉRER LE RENDU DE NOTRE PAGE D'ACCUEIL.
*/
namespace App\config;
use App\src\controller\BackController;
use App\src\controller\FrontController;
use App\src\controller\ErrorController;

use Exception;

class Router
{
    private $_frontController;
    private $_backController;
    private $_errorController;

    /**
     * instanciation des Controllers et fait un appelle automatique des fonctions 
     */
    public function __construct()
    {
        $this->_frontController = new FrontController();
        $this->_backcontroller = new BackController();
        $this->_errorController = new ErrorController();
    }

    /**
     *  // Route une requête entrante : exécution l'action associée
     */
    public function run()
    {
try{
    if(isset($_GET['route']))
    {
        if($_GET['route'] === 'ticket'){
            $this->_frontController->ticket($_GET['ticketId']);
           
        } // route est passée à une méthode appelée  ajoutTicket du backController qui prend en paramètre la variable superglobale  $_POST
        elseif($_GET['route'] === 'ajoutTicket'){
            $this->_backController->ajoutTicket($_POST);
        }
        else{
            // aucune action définie : affichage de page 404 + redirect à la page principale
            $this->_errorController->errorNotFound();
        }
    }
    else{
        $this->_frontController->home();
        
    }
}
catch (Exception $e)
{   
    // aucune action définie : affichage de page 500 + redirect à la page principale
    $this->_errorController->errorServer();
}

    }
}


class BackController{


    private $_view;

    public function __construct()
    {
        $this->_view = new View();
    }
    /**
     * Méthode qui récupere l'insertion de ticket pour l'user connecté
     * si formulaire soumis alors on rentre dans la condition et on fait appel à la méthode ajoutTicket de la classe ticketManager, 
     * si contaire on ne rentre pas dans la conditions.
     * @return string,array
     */
    public function ajoutTicket($post){
        if(isset($post['submit'])){
            $ticketManager = new TicketManager();
            $ticketManager->ajoutTicket($post);
            header('Location: ../public/index.php');
        }
        //Génère et affiche la vue (nom de page, array)
        return $this->_view->rendu('add_ticket',['post' => $post]);

    }
}

<?php
/**
 * CLASS GESTIONS GLOBALE DES TICKETS 
 */
namespace App\src\Manager;
use App\src\model\Ticket;

class TicketManager extends Manager
{   
//etc....
  /**
     *  Méthode qui gere l'insertion de ticket
     * @return array $ticket
     */
    public function ajoutTicket($ticket){
         //Permet de récupérer les variables $title, $content et $author
         extract($ticket);
         $sql = 'INSERT INTO ticket (title, content, author, createdAt) VALUES (?, ?, ?, NOW())';
         $this->createQuery($sql, [$title, $content, $author]);


    }
//etc....
}

Configuration: 
Quant j'appui sur le lien :
<a href="../public/index.php?route=ajoutTicket">Nouvel Ticket</a>

Fatal error: Uncaught Error: Call to a member function ajoutTicket() on null
Windows / Chrome 80.0.3987.122

3 réponses

Messages postés
12752
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
708
bonjour, le message d'erreur ne te donne aucune information supplémentaire?
Messages postés
29839
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 octobre 2020
2 875
Regarde bien ces deux lignes
$this->_backcontroller = new BackController();
$this->_backController->ajoutTicket($_POST);

Messages postés
37
Date d'inscription
samedi 10 février 2018
Statut
Membre
Dernière intervention
22 juillet 2020

re: ahh merci je suis rester dessus bien trop longtemps. c'est bon corriger MAJ _backController