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';
}
}
?>