Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Switch case

O break do switch case parece não estar funcionando!

index.php

switch ($_SERVER['PATH_INFO']) {
    case '/listar-cursos':
        require 'listar-cursos.php';
        break;
    case '/novo-curso':
        require 'formulario-novo-curso.php';
        break;
    default:
        echo "Erro 404";
        break;

}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade está listando as 2 páginas em listar-cursos

Insira aqui a descrição dessa imagem para ajudar na acessibilidade E está duplicando em novo curso

Insira aqui a descrição dessa imagem para ajudar na acessibilidade E na index.php apresenta um warning e printa a mensagem de erro 404....

E tenho mais uma pergunta.

O Vinicius cita no vídeo o curso de doctrine , esse curso seria o curso de composer?

8 respostas

Opa, Rodrigo. Esse é curso de Doctrine: https://cursos.alura.com.br/course/php-doctrine-mapeamento-objeto-relacional?preRequirementFrom=php-model-view-controller

PS.: Ele foi regravado e deve ser lançado em sua versão atualizada em breve

Sobre o erro, como está seu código todo? Consegue compartilhar ele, por favor?

listar-cursos.php

<?php
require __DIR__ . '/../vendor/autoload.php';

$entityManager = (new \Alura\Cursos\Infra\EntityManagerCreator())->getEntityManager();
$repositorioDeCursos = $entityManager->getRepository(\Alura\Cursos\Entity\Curso::class);
$cursos = $repositorioDeCursos->findAll();
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
<div class="container">
    <div class="jumbotron">
        <h1>Listar cursos</h1>
    </div>
    <a href="/novo-curso" class="btn btn-primary mb-2">
        Novo curso
    </a>
    <ul class="list-group">
        <?php foreach ($cursos as $curso): ?>
            <li class="list-group-item">
                <?= $curso->getDescricao(); ?>
            </li>
        <?php endforeach; ?>
    </ul>
</div>
</body>
</html>

formulario-novo-curso.php

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
<div class="container">
    <div class="jumbotron">
        <h1>Novo Curso</h1>
    </div>
<form action="">
    <div class="form-group">
        <label for="descricao">Descricao</label>
        <input type="text" class="form-control" id="descricao" name="descricao">
    </div>
    <button class="btn btn-primary my-2">Salvar</button>
</form>
</div>
</body>
</html>

index.php

<?php

    switch ($_SERVER['PATH_INFO']) {
    case '/listar-cursos':
        require 'listar-cursos.php';
        break;
    case '/novo-curso':
        require 'formulario-novo-curso.php';
        break;
    default:
        echo "Erro 404";
        break;

}


?>


<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
<div class="container">
    <div class="jumbotron">
        <h1>Novo Curso</h1>
    </div>
</div>
</body>
</html>

E sobre o curso de Doctrine Vinicius pretendo fazer sim, tem previsão de quando será lançada a atualização?

solução!

Rodrigo, o erro tá no seu index. Você tem um HTML nele. rsrsrs

Esse HTML tá obviamente sendo exibido também.

Intendi, mas então não irei fazer nenhuma estrutura no index, se fizer irá duplicar seria isso? mais um detalhe o Erro 404 continuou aparecendo para index. consegui resolver com um if...

    switch ($_SERVER['PATH_INFO']) {
    case '/listar-cursos':
        require 'listar-cursos.php';
        break;
    case '/novo-curso':
        require 'formulario-novo-curso.php';
        break;
    default:
        if (!$_SERVER['PATH_INFO'] === 'index') {
            echo "Erro 404";
            break;
        }
        break;

}

Seu novo código não fez sentido. /index deveria ser 404 sim. Por que não?

Não sei. kkkkkkkkkkkkkk

Só estou acostumado com a index sendo a página principal... kkkkk

mas valeu professor vou seguir com a aula e manter o projeto como o apresentado

abraço

Nesse projeto o arquivo index é nosso front controller. Ele é o ponto de entrada na nossa aplicação. Ele é o que vai inicializar toda a estrutura do nosso projeto.