Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos!
Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
Desde já, obrigado.
Olá!
Percebi que seu sistema não define rotas, mas sim executa e sai exit() da execução.
Dessa forma, sempre será executada apenas e somente a primeira rota.
Acredito que precisar efetuar 2 procedimentos:
1) definir as rotas
2) executar a rota, conforme a REQUEST_URI atual
Olá a todos!
>
1 hora atrás, tetsuo disse:
não percebi o .htaccess do apache, você está usando nginx?
public/.htaccess
RewriteEngine On
RewriteBase /
>
1 hora atrás, washalbano disse:
Olá!
Percebi que seu sistema não define rotas, mas sim executa e sai exit() da execução.
Dessa forma, sempre será executada apenas e somente a primeira rota.
Acredito que precisar efetuar 2 procedimentos:
1) definir as rotas
2) executar a rota, conforme a REQUEST_URI atual
Fiz algumas alterações, mas estou perdido mais que bala em tiroteio.
Criei um arquivo Router.php no diretorio app (app/Router.php)
<?php
class Router {
private static $routes = [];
// Método para registrar uma rota
public static function route($method, $pattern, $controllerMethod) {
self::$routes[] = [
'method' => $method,
'pattern' => $pattern,
'controllerMethod' => $controllerMethod
];
}
// Método para manipular as rotas
public static function handleRequest() {
$requestedMethod = $_SERVER['REQUEST_METHOD'];
$requestedUri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
foreach (self::$routes as $route) {
if ($route['method'] === $requestedMethod && preg_match($route['pattern'], $requestedUri, $matches)) {
// Remove o primeiro elemento, pois é a correspondência completa
array_shift($matches);
// Chama o método do controlador passando parâmetros da URL
$controllerMethod = explode('@', $route['controllerMethod']);
$controllerName = $controllerMethod[0];
$methodName = $controllerMethod[1];
require_once __DIR__ . "/Controllers/{$controllerName}.php";
$controllerInstance = new $controllerName();
call_user_func_array([$controllerInstance, $methodName], $matches);
return; // Interrompe o loop após a primeira correspondência
}
}
// Se nenhuma rota correspondente for encontrada, mostra erro 404
http_response_code(404);
include_once __DIR__ . '/../resources/views/errors/404.php';
}
}
Alterei o index da pasta public (**public/index.php**)
<?php// Inclui o arquivo de roteamento
require_once __DIR__ . '/../routes/web.php';
// Manipula a requisição
Router::handleRequest();
E alterei o web da pasta routes (**routes/web.php**)
<?php// Define as rotas
// Rota para a página inicial
Router::route('GET', '~^/$~', 'HomeController@index');
// Rota para a página de registro
Router::route('GET', '~^/register$~', 'RegisterController@showForm');
Router::route('POST', '~^/register$~', 'RegisterController@registerUser');
Mas não está funcionando, peço ajuda de vocês para fazerem o meu código funcionar.
[https://github.com/PauloJagata/aprendizado/](https://github.com/PauloJagata/aprendizado/)
Desde já, obrigado./applications/core/interface/imageproxy/imageproxy.php?img=https://img001.prntscr.com/file/img001/oz_gXhzDRKudGb08RxiX1Q.png&key=acd3ed28e306391d77d0c4275c95ff6930ce527c871b9bdd452dc2e00bc76c54" width="442" data-imageproxy-source="https://img001.prntscr.com/file/img001/oz_gXhzDRKudGb08RxiX1Q.png" />
Já melhorou muito, heim???
Com foi que mudou tanto assim?
Já está funcionando!
Só precisei diminuir uma descida de nível ali
não percebi o .htaccess do apache, você está usando nginx?