Erro 404 - Rotas no PHP

0 respostas
php
vanribeiro

Gente, estou aprendendo um pouco de PHP e encontrei um tutorial muito legal. Tudo estava funcionando muito bem, até chegarmos na parte do Router.

O site até funciona. Quando abro a URL, ele aponta para a index e a página principal aparece, porém não consigo acessar os links da página, como editar ou adicionar, por exemplo. Sempre que clico, surge o erro 404. Observei que a URL sempre aponta para public, mas em public só existe a página index.

Alguém pode me ajudar a apontar para o caminho correto?

Abaixo coloquei parte do código, mas estou anexando a pasta com os arquivo. suggestotron.zip (8,3,KB)
Para quem prefere, o link no GitHub.

Essa é a estrutura da pasta:

(raiz)suggestotron
    ├───config
           autoload.php
           database.php
           site.php
    
    ├───public
          index.php
       
       └───css
               style.css
    
    ├───src
       └───Suggestotron
              Autoloader.php
              Config.php
              Router.php
              Template.php
              TopicData.php
           
           └───Controller
                   Topics.php
    
    └───views
           base.phtml
        
        └───index
                add.phtml
                edit.phtml
                index.phtml
                list.phtml

../public/index.php:

<?php
    require_once '../src/Suggestotron/Config.php';
    \Suggestotron\Config::setDirectory('../config');
    
    $config = \Suggestotron\Config::get('autoload');
    require_once $config['class_path'] . '/Suggestotron/Autoloader.php';

    if(!isset($_SERVER['class_path']) || empty($_SERVER['PATH_INFO'] || $_SERVER['PATH_INFO']) == '/'){
        $route = 'list';
    } else{
        $route = $_SERVER['PATH_INFO'];
    }
    
    $router = new \Suggestotron\Router();
    $router->start($route);
?>

../src/Suggestotron/Router.php

<?php
    namespace Suggestotron;

    class Router{
        public function start($route){
            if($route{0} == "/"){
                $route = substr($route, 1);
                exit;
            } 

            $controller = new \Suggestotron\Controller\Topics();
            $method = [$controller, $route . 'Action'];
            if(is_callable($method)){
                return $method();
            }

            require 'error.php';
            
        }
    }
?>
Criado 13 de dezembro de 2019
Respostas 0
Participantes 1