Format MVC

Par Thibaud Brangerieau, il y a 8 ans


Bonjour tous le monde,

J'ai un petit soucis avec le code que grafikart a donné sur le tutoriel MVC :
https://www.grafikart.fr/formations/programmation-objet-php/mvc-model-view-controller

J'ai télécharger la source, j'ai la meme BDD mais pourtant il me met des erreurs comme quoi il ne trouve pas la function 'forbidden' et quand je vais sur le p=login , il me met 3 erreur. Le code MVC de grafikart est beugé ou pas ?

Merci de votre aide

10 réponses

TuxBoyBzh, il y a 8 ans

Bonjour,

Tu peux afficher un peut de code, la partie ou tu appelle les controller suivant l'uri ?

TuxBoyBzh, il y a 8 ans

ça fait beacuoup d'erreurs en effet ^^, Peux-tu nous montrer ta page login stp, la partie du code en erreur.

Thibaud Brangerieau, il y a 8 ans
<?php use Core\Auth\DBAuth; define('ROOT', dirname(__DIR__)); require ROOT . '/app/App.php'; App::load(); if(isset($_GET['p'])){ $page = $_GET['p']; }else{ $page = 'home'; } // Auth $app = App::getInstance(); $auth = new DBAuth($app->getDb()); if(!$auth->logged()){ $app->forbidden(); } ob_start(); if($page === 'home'){ require ROOT . '/pages/admin/posts/index.php'; } elseif ($page === 'posts.edit'){ require ROOT . '/pages/admin/posts/edit.php'; } elseif ($page === 'posts.add'){ require ROOT . '/pages/admin/posts/add.php'; }elseif ($page === 'posts.delete'){ require ROOT . '/pages/admin/posts/delete.php'; }elseif($page === 'categories.index'){ require ROOT . '/pages/admin/categories/index.php'; } elseif ($page === 'categories.edit'){ require ROOT . '/pages/admin/categories/edit.php'; } elseif ($page === 'categories.add'){ require ROOT . '/pages/admin/categories/add.php'; }elseif ($page === 'categories.delete'){ require ROOT . '/pages/admin/categories/delete.php'; } $content = ob_get_clean(); require ROOT . '/pages/templates/default.php';
tleb, il y a 8 ans

Bonjour,

Et tu as quoi comme erreurs ?

Thibaud Brangerieau, il y a 8 ans

Pour la page login :

  • Notice: Undefined offset: 1 in C:\wamp64\www\POO\public\index.php on line 18
  • Warning: require(C:\wamp64\www\POO\app/Controller/LoginController.php): failed to open stream: No such file or directory in C:\wamp64\www\POO\app\Autoloader.php on line 24
  • Fatal error: require(): Failed opening required 'C:\wamp64\www\POO\app/Controller/LoginController.php' (include_path='.;C:\php\pear') in C:\wamp64\www\POO\app\Autoloader.php on line 24

    Pour admin :

  • Fatal error: Call to undefined method App::forbidden() in C:\wamp64\www\POO\public\admin.php on line 18
Thibaud Brangerieau, il y a 8 ans

Login.php

<?php if($errors): ?> <div class="alert alert-danger"> Identifiants incorrects </div> <?php endif; ?> <form method="post"> <?= $form->input('username', 'Pseudo'); ?> <?= $form->input('password', 'Mot de passe', ['type' => 'password']); ?> <button class="btn btn-primary">Envoyer</button> </form>

index.php

<?php define('ROOT', dirname(__DIR__)); require ROOT . '/app/App.php'; App::load(); if(isset($_GET['p'])){ $page = $_GET['p']; }else{ $page = 'posts.index'; } $page = explode('.', $page); if($page[0] == 'admin'){ $controller = '\App\Controller\Admin\\' . ucfirst($page[1]) . 'Controller'; $action = $page[2]; } else{ $controller = '\App\Controller\\' . ucfirst($page[0]) . 'Controller'; $action = $page[1]; } $controller = new $controller(); $controller->$action();

J'ai plus que c'est 2 erreurs sur la page login :

  • Notice: Undefined offset: 1 in C:\wamp64\www\POO\public\index.php on line 18
  • Fatal error: Method name must be a string in C:\wamp64\www\POO\public\index.php on line 21

C'est bizarre car je n'ai pas du tous changer le code de grafikart ...

Carouge10, il y a 8 ans

Salut,
Ton erreur d'offset est logique puisque quand tu souhaites te rendre sur la page login tu as "p=login"
Donc $page[0] = "login" mais $page[1] est inexistant. Tu n'as pas d'action.
Dans ce cas si $page[1] n'existe pas alors $action devra être égale à "index" par exemple

Carouge10, il y a 8 ans

A mon avis, la bonne url est "p=users.login"

Thibaud Brangerieau, il y a 8 ans

Punaise ! J'avais oublier se detaille !!! Je suis un boulet ! Merci