Bonjour,

J'ai visonné le tutoriel surle router en PHP plusieur fois, pour essayer de l'adapter à mon blog.

J'ai beaucoup de problèmes sur ce routeur mais c'est extrêmement important pour moi .... Si jamais le post est trop long, je suis dispo sur skype ou hangout, et je validerai votre réponse sur le forum après cela sans problème ...

Je pense que j'ai pas cerné l'ultilisation du truc, je me retrouve avec un code à rallonge, je ne sais pas si c'est normal

if(!isset($_GET['url'])){
    $url = '/';
}
else{
    $url = $_GET['url'];
}
$router = new App\Router\Router($url);

$router->get('/posts/:slug-:id', 'Posts#show')->with('id', '[0-9]+')->with('slug', '[a-z\-0-9]+');

$router->get('/posts/:id', 'Posts#show'); // postController et action Show
$router->get('/error/404', 'Posts#show'); // postController et action Show
$router->get('/about', 'Pages#about'); // postController et action Show
$router->get('/contact', 'Pages#contact'); // postController et action Show

$router->get('/posts', 'App#notFound');
$router->get('/Admin', 'Admin#Posts#index');
$router->get('/Admin/posts/add', 'Admin#Posts#add');
$router->post('/Admin/posts/add', 'Admin#Posts#add');
$router->get('/Admin/posts/edit/:id', 'Admin#Posts#edit');
$router->post('/Admin/posts/edit/:id', 'Admin#Posts#edit');
$router->post('/Admin/posts/delete', 'Admin#Posts#delete');
$router->post('/Admin/posts/appear', 'Admin#Posts#appear');
$router->post('/Admin/posts/disappear', 'Admin#Posts#disappear');
$router->get('/category/:id', 'Posts#category');

$router->post('/Admin/posts/deletecomment', 'Admin#posts#deletecomment');
$router->get('/Admin/categories/add', 'Admin#categories#add');
$router->post('/Admin/categories/add', 'Admin#categories#add');
$router->get('/Admin/categories/edit/:id', 'Admin#categories#edit');
$router->post('/Admin/categories/edit/:id', 'Admin#categories#edit');
$router->post('/Admin/categories/delete', 'Admin#categories#delete');

$router->get('/Admin/system/dashboard', 'Admin#system#dashboard');
$router->get('/Admin/system', 'Admin#system#index');
$router->get('/Admin/categories', 'Admin#categories#index');
$router->get('/Admin/posts/comments', 'Admin#Posts#comments');
$router->get('/Admin/system/seo', 'Admin#system#seo');

$router->get('/', 'Posts#index');

$router->run();

En ce qui concerne la méthode Call, je l'ai légèrement modifiée pour avoir la partie Admin

public function call(){
        if(is_string($this->callable)){
            $params = explode('#', $this->callable);

            if($params[0] === 'Admin'){
                $controller = "App\\Controller\\Admin\\" . ucfirst($params[1]) . "Controller";
                $action = $params[2];
            }
            else{
                $controller = "App\\Controller\\" . ucfirst($params[0]) . "Controller";
                $action = $params[1];
            }

            //$controller = "App\\Controller\\" . ucfirst($params[0]) . "Controller";
            $controller = new $controller();
            return call_user_func_array([$controller, $action], $this->matches);

            return $controller->$action();
        }
        else{
            return call_user_func_array($this->callable, $this->matches);
        }
    }

Alors mes questions sont les suivantes:

  • Est-ce que j'utilise le router correctement ?
  • Problème numero 2:
    Je suis sur un article, je veux mettre un commentaire, le script plante ...
    ( http://withtimeandfit.com/index.php?p=posts.show&id=8 : article actuel sans redirection)
  • Problème numero 3:
    J'ai une liste des commentaires posté, et je peux les supprimer (comme les articles) à l'adresse donc Admin/posts/comments
    Mon formulaire est le suivant:
    <form action="deletecomment" method="post" style="display: inline;">
                    <input type="hidden" name="id" value="<?= $comment->id; ?>">
                    <button type="submit" class="btn btn-danger">X</button></td>
            </form>

    L'url renvoyée est: Admin/posts/Admin/posts/comments

est la page :

bject(App\Router\Route)[32]
private 'path' => string '' (length=0)
private 'callable' => string 'Posts#index' (length=11)
private 'matches' =>
array (size=0)
empty
private 'params' =>
array (size=0)
empty

( ! ) Fatal error: Uncaught exception 'App\Router\RouterException' with message 'No Matching routes' in C:\wamp\www\Blog2\app\Router\Router.php on line 47

Merci d'avance !!

Aucune réponse