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

Signaler
Messages postés
35
Date d'inscription
samedi 10 février 2018
Statut
Membre
Dernière intervention
16 juin 2020
-
Messages postés
35
Date d'inscription
samedi 10 février 2018
Statut
Membre
Dernière intervention
16 juin 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
11440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 juillet 2020
655
bonjour, le message d'erreur ne te donne aucune information supplémentaire?
Messages postés
28837
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2020
2 586
Regarde bien ces deux lignes
$this->_backcontroller = new BackController();
$this->_backController->ajoutTicket($_POST);

Messages postés
35
Date d'inscription
samedi 10 février 2018
Statut
Membre
Dernière intervention
16 juin 2020

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