Fatal error: Uncaught Error: Call to a member function ajoutTicket() on null

Résolu/Fermé
nilson42 Messages postés 37 Date d'inscription samedi 10 février 2018 Statut Membre Dernière intervention 22 juillet 2020 - Modifié le 6 mars 2020 à 19:34
nilson42 Messages postés 37 Date d'inscription samedi 10 février 2018 Statut Membre Dernière intervention 22 juillet 2020 - 7 mars 2020 à 00:51
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

yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
6 mars 2020 à 20:38
bonjour, le message d'erreur ne te donne aucune information supplémentaire?
1