Documentation du super site du Pic. Ce site sert à gérer les contenus et services du Pic’Asso (télés, perms, trésorerie, etc.), et à les afficher proprement aux utilisateurs.
Le site est en Laravel. C'est un framework MVC (Modèle-Vue-Contrôleur) strict dans lequel on va coder majoritairement en php. L'objectif est la séparation des préoccupations (Separation of Concerns).
Pour celles et ceux qui n'ont pas suivi SR03 ou SR10 ou d'autres UVs du type voici un petit récap de ce qu'est le modèle MVC et commment il s'applique à se projet.
-
M - Model (
app/Models)- Rôle : Abstraction de la base de données (ORM Eloquent) et logique métier.
- Responsabilité : Chaque classe (ex:
Tv) correspond à une table SQL (tvs). C'est ici que sont définies les relations (hasMany,belongsTo) et les scopes. - Règle : Pas de requêtes SQL brutes dans les contrôleurs, on utilise les méthodes du Modèle.
-
V - View (
resources/views)- Rôle : Présentation et interface utilisateur.
- Tech : Moteur de template Blade (
.blade.php). - Responsabilité : Afficher les données injectées par le contrôleur. Blade compile en PHP pur et permet d'utiliser des structures de contrôle (
@foreach,@if) directement dans le HTML.
-
C - Controller (
app/Http/Controllers)- Rôle : Orchestrateur.
- Responsabilité : Il intercepte la requête HTTP, valide les entrées, appelle les Modèles pour la data, et retourne une Réponse (Vue ou JSON).
- Règle : Un contrôleur doit rester "léger". Il ne contient pas de logique métier complexe (qui devrait être dans un Service ou un Modèle).
Pour comprendre Laravel, imagine un tuyau :
graph TD
A["Navigateur (Tape une URL)"] --> B["Route (Le panneau de direction)"]
B --> C["Controller (Le chef d'orchestre)"]
C --> D["Model (La liaison avec la base)"]
D --> E["View (Le design HTML/Blade)"]
E --> F["Utilisateur (La page s'affiche)"]
En langage simple :
Quand quelqu’un tape une URL, Laravel suit une route → appelle un contrôleur → récupère des données via un modèle → affiche une vue HTML.
C’est le plan des routes.
Chaque ligne dit : “Si l’URL est X, alors fais ça”.
Exemple (simplifié) :
Route::get('/TV/{tv}', [\App\Http\Controllers\TvController::class, 'show']);Traduction :
Quand quelqu’un va sur /TV/quelquechose, Laravel appelle la méthode show du contrôleur TvController.
Ici on écrit le fonctionnement de chaque page.
Le contrôleur :
- récupère des données (depuis les modèles)
- filtre, trie, prépare
- renvoie une vue
Exemple très basique :
public function show(Tv $tv)
{
$link = $tv->link; // on récupère un lien associé
return view('TV.display', compact('link'));
}Un Model représente une table en base de données.
Exemple :
Tv.php= tabletvLink.php= tablelink
Le modèle sert à :
- récupérer les lignes de la base
- définir des relations (ex: une TV a un lien)
Exemple (simplifié) :
class Tv extends Model
{
public function link()
{
return $this->belongsTo(Link::class);
}
}Ici on écrit ce que l’utilisateur voit.
Laravel utilise Blade, un mini-langage dans le HTML.
Blade mélange du HTML + des petits scripts faciles à lire.
Quelques sintaxes :
{{ $variable }}: affiche une variable@if: condition@foreach: boucle
Exemple Blade :
<h1>Bienvenue {{ $user->name }}</h1>
@if($user->isAdmin)
<p>Tu es admin.</p>
@endif
<ul>
@foreach($links as $link)
<li>{{ $link->name }}</li>
@endforeach
</ul>Toutes les erreurs Laravel sont enregistrées ici :
storage/logs/laravel.log
Si ça bug, c’est ici qu’il faut regarder en premier.
Je vous conseille de vous connecter directement en ssh sur le serveur pour ouvrir ce fichier avec tail et de suivre l'évolution des messages d'erreur en live :
tail -f storage/logs/laravel.logtail -f = affiche les nouvelles lignes en temps réel.
Ou bien :
tail -n 100 storage/logs/laravel.logPour afficher les 100 dernières lignes d'erreurs (les erreurs font généralement autour de 60-80 lignes)
Lance le serveur local.
Utile pour tester en local.
php artisan servePuis ouvre : http://127.0.0.1:8000
Affiche toutes les routes disponibles.
Très utile pour retrouver quelle URL correspond à quoi.
php artisan route:listTu verras :
- la méthode HTTP (GET, POST)
- l’URL
- le contrôleur
Applique les migrations de base de données.
php artisan migrateTraduction :
Laravel crée ou modifie les tables selon les fichiers dans database/migrations.
- PHP (version compatible Laravel)
- Composer (gestionnaire de dépendances PHP)
- Node.js + npm (pour les assets front si besoin)
1/ Cloner le projet
git clone <url-du-repo>
cd ocktopus2/ Installer les dépendances PHP
composer install3/ Configurer l’environnement
Demande le fichier .env au responsable, puis mets-le à la racine du projet.
Pour une base locale simple :
DB_CONNECTION=sqlite4/ Créer la base de données
php artisan migrate5/ Lancer le serveur
php artisan servePuis ouvre : http://127.0.0.1:8000
Rédigé en A25 par votre super Resp Info, Clément Chazelas.
J'encourage mes successeurs à étoffer cette rapide documentation, pour ceux qui viendront après. Ne laissont pas ce super projet subir le cycle de renouvellement qu'on voit bien trop souvent dans le paysage associatif de notre belle école.
Have fun !