Fatal error: Uncaught Error: Call to a member function ajoutTicket() on null
Résolu
Bonjour,
j'ai essayer de rajouter l'insertion d'un ticket(article) mais cela ne marche pas. alors voilà.
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
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
-
Contributeurbonjour, le message d'erreur ne te donne aucune information supplémentaire?
-
ModérateurRegarde bien ces deux lignes
$this->_backcontroller = new BackController(); $this->_backController->ajoutTicket($_POST);
-
re: ahh merci je suis rester dessus bien trop longtemps. c'est bon corriger MAJ _backController