<?php
namespace App\Controllers;
use Twig\Environment;
use App\Config\Config;
use App\Models\PostModel;
class PostController extends BaseController
{
private $postModel;
protected $twig;
public function __construct(Environment $twig)
{
$postModel = new PostModel;
$this->postModel = $postModel;
$this->twig = $twig;
}
public function create_post_Form()
{
echo $this->twig->render('post/add_post_form.twig');
}
// la suite ...
Mais j'ai un message d'erreur au niveau de la ligne
$postModel = new PostModel;
Même problème sur sur cette ligne dans un autre contrôleur Je vous donne mon postModel si jamais :
<?
namespace App\models;
class PostModel extends BaseModel
{
protected $table = 'posts';
public function __construct()
{
parent::__construct();
}
public function getAllPosts()
{
return $this->getAll();
}
public function getPostByID($id)
{
return $this->getById($id);
}
public function create($postData)
{
// Insérer un nouvel article dans la base de données
$sql = "INSERT INTO {$this->table} (title, content, author_id, creation_date) VALUES (?, ?, ?, NOW())";
$params = [$postData['title'], $postData['content'], $postData['author_id']];
$this->execute($sql, $params);
return $this->db->lastInsertId();
}
public function update($id, $postData)
{
// Mettre à jour un article dans la base de données
$sql = "UPDATE {$this->table} SET title = ?, content = ? WHERE id = ?";
$params = [$postData['title'], $postData['content'], $id];
$this->execute($sql, $params);
}
public function delete($id)
{
// Supprimer un article de la base de données
$sql = "DELETE FROM {$this->table} WHERE id = ?";
$this->execute($sql, [$id]);
}
}
j'ai un autel constructeur avec un autre model (construit de la même façon) qui ne pose aucun problème :
Le controller
<?php
namespace App\Controllers;
use App\Config\Config;
use Twig\Environment;
use App\Models\UserModel;
class UserController extends BaseController
{
private $userModel;
protected $twig;
public function __construct(Environment $twig)
{
$userModel = new UserModel;
$this->userModel = $userModel;
$this->twig = $twig;
}
public function add_user_Form()
{
$config = new Config;
$base_url = $config->getBaseUrl();
echo $this->twig->render('admin_user/add_user_Form.twig', ['base_url' => $base_url]);
}
public function add_user()
{
$config = new Config;
$base_url = $config->getBaseUrl();
// Récupérer les données du formulaire
$userData = [
'username' => $_POST['username'],
'email' => $_POST['email'],
'password' => $_POST['password'],
'role' => $_POST['role'],
// Ajoutez d'autres champs ici
];
// Ajouter un utilisateur
$this->userModel->create($userData);
echo $this->twig->render('admin_user/user_added.twig', ['base_url' => $base_url]);
}
public function update_user_Form($id)
{
$config = new Config;
$base_url = $config->getBaseUrl();
// Récupérer les données de l'utilisateur à modifier
$user = $this->userModel->getUserById($id);
$data = array(
'user' => $user,
'base_url' => $base_url
);
// Afficher le formulaire de modification avec les données de l'utilisateur
echo $this->twig->render('admin_user/update_user_Form.twig', $data);
}
public function update($id)
{
$config = new Config;
$base_url = $config->getBaseUrl();
// Récupérer les données du formulaire
$userData = [
'username' => $_POST['username'],
'email' => $_POST['email'],
'password' => $_POST['password'],
'role' => $_POST['role'],
];
// Mettre à jour l'utilisateur
$this->userModel->update($id, $userData, $base_url);
// Rediriger vers la liste des utilisateurs
header("Location:" . $base_url . "admin");
exit;
}
public function delete_user_confirmation($id)
{
$config = new Config;
$base_url = $config->getBaseUrl();
// Récupérer les données de l'utilisateur à supprimer
$user = $this->userModel->getUserById($id);
$data = array(
'user' => $user,
'base_url' => $base_url
);
// Afficher la confirmation de suppression avec les données de l'utilisateur
echo $this->twig->render('admin_user/delete_user_confirmation.twig', $data);
}
public function delete($id)
{
$config = new Config;
$base_url = $config->getBaseUrl();
// Supprimer l'utilisateur
$this->userModel->delete($id);
// Rediriger vers la liste des utilisateurs
header("Location:" . $base_url . "admin");
exit;
}
}
et le Moedel
<?php
namespace App\Models;
class UserModel extends BaseModel
{
protected $table = 'users';
public function __construct()
{
parent::__construct();
}
public function getAllUsers()
{
return $this->getAll();
}
public function getUserById($id)
{
return $this->getById($id);
}
public function create($userData)
{
// Insérer un nouvel utilisateur dans la base de données
$sql = "INSERT INTO {$this->table} (username, email, password, role) VALUES (?, ?, ?, ?)";
$params = [$userData['username'], $userData['email'], hash('sha256', $userData['password']), $userData['role']];
$this->execute($sql, $params);
return $this->db->lastInsertId();
}
public function update($id, $userData)
{
// Mettre à jour un utilisateur dans la base de données
$sql = "UPDATE {$this->table} SET username = ?, email = ?, password = ?, role = ? WHERE id = ?";
$params = [$userData['username'], $userData['email'], hash('sha256', $userData['password']), $userData['role'], $id];
$this->execute($sql, $params);
}
public function delete($id)
{
// Supprimer un utilisateur de la base de données
$sql = "DELETE FROM {$this->table} WHERE id = ?";
$this->execute($sql, [$id]);
}
// Autres méthodes de gestion des utilisateurs
}
Je vous donne le code complet de PostController
<?
namespace App\models;
class PostModel extends BaseModel
{
protected $table = 'posts';
public function __construct()
{
parent::__construct();
}
public function getAllPosts()
{
return $this->getAll();
}
public function getPostByID($id)
{
return $this->getById($id);
}
public function create($postData)
{
// Insérer un nouvel article dans la base de données
$sql = "INSERT INTO {$this->table} (title, content, author_id, creation_date) VALUES (?, ?, ?, NOW())";
$params = [$postData['title'], $postData['content'], $postData['author_id']];
$this->execute($sql, $params);
return $this->db->lastInsertId();
}
public function update($id, $postData)
{
// Mettre à jour un article dans la base de données
$sql = "UPDATE {$this->table} SET title = ?, content = ? WHERE id = ?";
$params = [$postData['title'], $postData['content'], $id];
$this->execute($sql, $params);
}
public function delete($id)
{
// Supprimer un article de la base de données
$sql = "DELETE FROM {$this->table} WHERE id = ?";
$this->execute($sql, [$id]);
}
}
Je vous donne une image du message d'erreur
PS : je ne passe pas un tuto YouTube
edit : Mince, je pensais que l'image s'afficherait en grand en cliquant dessus On peut toujours faire 'ctrl+molette'
Ton code n'est pas interprété parce que ton serveur n'est pas configuré avec short_open_tag à on voilà pourquoi il est recommandé de toujours employer<?php à sa forme courte qui, elle, est toujours valable/ne dépend d'aucun paramètre.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli