Accéder à PDO depuis le contrôleur

Par joedu12, il y a 8 ans


Bonjour à tous,

J'ai un léger problème avec mon code.
Je cherche à mettre en place un site avec le Framework Slim, un accès à une base de données MySQL via PDO, le tout avec une interface Twig/Bootstrap.
J'ai suivi le tutoriel : https://www.grafikart.fr/tutoriels/php/slim-framework-831
Le code est accessible en intégralité sur GitHub : https://github.com/joedu12/oriTrail-slim3

Accès à la base de données (Slim Framework 3)

Je suis dans PagesController et j'aimerais avoir l'accès à l'objet PDO

class PagesController extends Controller { public function getLieu(RequestInterface $request, ResponseInterface $response) { // ce code plante : $lieux = $this->$database->query('SELECT * FROM Lieu'); var_dump($lieux); $this->render($response, 'pages/lieu.twig'); } }

Pourtant l'accès à la base de données dans la classe parente fonctionne :

class Controller { private $container; public function __construct($container) { $this->container = $container; // ce code fonctionne : $database = $this->container->get('db'); $lieux = $database->query('SELECT * FROM Lieu'); var_dump($lieux); } public function render(ResponseInterface $response, $file) { $this->container->view->render($response, $file); } }

Ce que je veux

Accéder à la base de données dans la classe fille.

Ce que j'obtiens

Undefined variable: database in /srv/http/oriTrail-slim3/app/Controllers/PagesController.php on line 25

Logique vu que $database n'existe pas, mais comment faire pour qu'il existe ?

Merci de m'avoir lu, en espérant que vous pourrez m'aider.

1 réponse