Bonjour , j'ai suivi la formation PHP et je cherche à ajouter un CSS perso et pouvoir utiliser jquery et du JS perso, mais avec Altorouter j'ai une erreur 500 que je n'arrive pas a corriger. en fait Altorouter n'arrive pas à trouver la bonne route du CSS perso et des differents scripts JS.
auriez vous une idée sur la solution a apporter à ce soucis?
merci d'avance.
Gilles
Bonsoir,
Tu peux définir une contante dans ta page index, qui sera l'url de base
define('BASE_URL', dirname($_SERVER['SCRIPT_NAME']));
pour ensuite l'utiliser sur ta view
<link rel="stylesheet" href="<?= BASE_URL; ?>/css/style.css" >
Bonjour,
ci-dessous le Layout ou j'ai mis le chemin vers le script JQUERY vendor/components/jquery/ , le fichier router et l'index.php qui se trouve dns le dossier public ou j'ai toutes mes route.
merci d'avance.
Gilles
<!DOCTYPE html>
<html lang="fr" class="h-100">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title><?= isset($title) ? e($title) : 'Appli Massoutre' ?></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 class="d-flex flex-column h-100">
<nav class="navbar navbar-expand-lg navbar-dark bg-danger">
<a href="/" class="navbar-brand">Applications Massoutre</a>
<ul class="navbar-nav">
<li class="nav-item">
<form action="<?= $router->url('login') ?>" method="post" style="display:inline">
<button type="submit" class="nav-link" style="background:transparent; border:none;">Se connecter</button>
</form>
</li>
</ul>
</nav>
<div class="container mt-4">
<?= $content ?>
toto
</div>
<footer class="bg-light py-4 footer mt-auto">
<div class="container">
<?php if (defined('DEBUG_TIME')): ?>
Page générée en <?= round(1000 * (microtime(true) - DEBUG_TIME)) ?> millisecondes.
<?php endif ?>
</div>
</footer>
<script src="../../vendor/components/jquery/jquery.js"></script>
</body>
</html>
le routeur
<?php
namespace App;
class Router {
/**
* @var string
*/
private $viewPath;
/**
* @var AltoRouter
*/
private $router;
public $layout = "layouts/default";
public function __construct(string $viewPath)
{
$this->viewPath = $viewPath;
$this->router = new \AltoRouter();
}
public function get(string $url, string $view, ?string $name = null): self
{
$this->router->map('GET', $url, $view, $name);
return $this;
}
public function post(string $url, string $view, ?string $name = null): self
{
$this->router->map('POST', $url, $view, $name);
return $this;
}
public function match(string $url, string $view, ?string $name = null): self
{
$this->router->map('POST|GET', $url, $view, $name);
return $this;
}
public function url (string $name, array $params = [])
{
return $this->router->generate($name, $params);
}
public function run(): self
{
$match = $this->router->match();
//dd($match);
$view = $match['target'];
$params = $match['params'];
$router = $this;
ob_start();
require $this->viewPath . DIRECTORY_SEPARATOR . $view . '.php';
$content = ob_get_clean();
require $this->viewPath . DIRECTORY_SEPARATOR . $this->layout . '.php';
return $this;
}
}
et mes differentes routes:
<?php
require '../vendor/autoload.php';
define('DEBUG_TIME', microtime(true));
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
if(isset($_GET['page']) && $_GET['page'] === '1') {
$uri = explode('?', $_SERVER['REQUEST_URI'])[0];
$get = $_GET;
unset($get['page']);
$query = http_build_query($get);
if (!empty($query)) {
$uri = $uri . '?' . $query;
}
header('Location: ' . $uri);
http_response_code(301);
exit();
}
$router = new App\Router(dirname(__DIR__) . '/views');
$router
->get('/', 'home/index', 'home')
->match('/login', 'auth/login', 'login')
->post('/logout', 'auth/logout', 'logout')
->get('/departs', 'ra/departs', 'departs')
->get('/overdue', 'ra/overdue', 'overdue')
->get('/jquery','vendor/components/jquery/jquery.js','jquery')
//->get('/open', 'ra/open', 'open')
->match('/open', 'ra/en_cours', 'open')
//ADMIN
//Gestion des contrats
->get('/admin', 'admin/index', 'admin')
->match('/admin/ra/import', 'admin/ra/import_departs', 'admin_import_departs')
->match('/admin/ra/update', 'admin/ra/update_contrat', 'admin_update_contrats')
->match('/admin/ra/champ', 'admin/ra/maj_champ', 'admin_maj_champ')
->get('/admin/ra/overdue', 'admin/ra/overdue', 'admin_overdue')
->match('/admin/ra/en_cours', 'admin/ra/en_cours', 'admin_en_cours')
//Gestion des contrats Aravis
->match('/admin/aravis/import', 'admin/aravis/import_departs', 'admin_aravis_import_departs')
->match('/admin/aravis/update', 'admin/aravis/update_contrat', 'admin_aravis_update_contrats')
->match('/admin/aravis/champ', 'admin/aravis/maj_champ', 'admin_aravis_maj_champ')
->get('/admin/aravis/overdue', 'admin/aravis/overdue', 'admin_aravis_overdue')
//Gestion des districts
->get('/admin/districts', '/admin/district/index', 'admin_districts')
->match('/admin/district/new', '/admin/district/new', 'admin_district_new')
->match('/admin/district/[i:id]', '/admin/district/edit', 'admin_district')
->post('/admin/district/[i:id]/delete', '/admin/district/delete', 'admin_district_delete')
//Gestion des secteurs
->get('/admin/secteurs', '/admin/secteur/index', 'admin_secteurs')
->match('/admin/secteur/new', '/admin/secteur/new', 'admin_secteur_new')
->match('/admin/secteur/[i:id]', '/admin/secteur/edit', 'admin_secteur')
->post('/admin/secteur/[i:id]/delete', '/admin/secteur/delete', 'admin_secteur_delete')
//Gestion des agences
->get('/admin/agences', '/admin/agence/index', 'admin_agences')
->match('/admin/agence/new', '/admin/agence/new', 'admin_agence_new')
->match('/admin/agence/[i:id]', '/admin/agence/edit', 'admin_agence')
->post('/admin/agence/[i:id]/delete', '/admin/agence/delete', 'admin_agence_delete')
//
//PV
->match('/pv/[*:slug]-[i:id]', 'pv/show', 'pv')
->get('/pv', 'pv/index', 'liste_pv')
->match('/category/[*:slug]-[i:id]', 'category/show', 'categorie')
->get('/category', 'category/index', 'category')
->run();
Merci pour le code,
Bon je ne suis pas un spécialiste des Routers, à titre personnel j'utilise mon propre Router "maison" comme ça je n'ai pas de mal à le faire fonctionner... et je n'ai pas vu non plus la formation PHP de Grafikart.
J'ai quand même regardé, il y a 2 trucs qui me choquent, sans forcément m'en dire que ce soit des pistes valables...