Skip to content

Add support to front controller to home made MVC or framework (type laravel...) - #162

Open
NemStudio18 wants to merge 62 commits into
YunoHost-Apps:testingfrom
NemStudio18:master
Open

Add support to front controller to home made MVC or framework (type laravel...)#162
NemStudio18 wants to merge 62 commits into
YunoHost-Apps:testingfrom
NemStudio18:master

Conversation

@NemStudio18

@NemStudio18 NemStudio18 commented Aug 11, 2025

Copy link
Copy Markdown

Problem

  • moderniser My_web app
  • en l'état le service est réellement basé sur du site web statique bien que php puisse être utilisé, dans les cas ou il faille servir /public a la place de /www, on fournir une réécriture d'url pour utiliser un index.php comme front controller. Le but est d'éviter d'aller toucher aux config a la main le plus possible.

Solution

  • intégrer un moyen de choisir son mode d'installation (static / front / framework)
  • Maj sup du support php 7.4.
  • lorsque sftp est choisi a l'installation, si on ne rentrait pas de mdp, erreur d'installation => si vide au lancement de l'installation, le mdp de l'user qui install l'app est utilisé par défaut (possible de modifier cela afin d'utiliser le même mdp que mysql)
  • maj de la config nginx pour proteger certains types de fichiers (env, ini etc)

PR Status

  • Code finished and ready to be reviewed/tested
  • [\ ] The fix/enhancement were manually tested (if applicable) : en partie, j'ai fais les 3 type d'installation, toutes se sont déroulées avec succès.
    constat que les routes demandées sont bien respéctées la construction des dossiers dans /www est bien celle attendue.
    Impossible de tester moi même la multitude de framework existant , mes test vont se dérouler avec pour "mvc homemade" le cms 299ko (déjà natif a yunoh mais je le connais et sais comment il doit fonctionner), il y aura surement des corrections a faire sur les config nginx de base au fil de l'eau.

de l'aide pour les tests est donc la bienvenue ^^'

en résumé:

Vue d'ensemble des Changements

Résumé des modifications apportées au projet My Webapp pour implémenter le support multi-modes.

1. Templates Nginx

conf/nginx-front-controller.conf (Mode Front Controller)

  • Path : root __INSTALL_DIR__/www/
  • try_files : $uri /index.php$is_args$args
  • Comportement : Toutes les requêtes passent par index.php

conf/nginx-framework.conf (Mode Framework)

  • Path : alias __INSTALL_DIR__/www/public/
  • try_files : $uri $uri/ __PATH__/index.php?$args
  • Comportement : Sert les fichiers publics, fallback vers index.php

conf/nginx.conf (Mode Statique - Défaut)

  • Path : alias __INSTALL_DIR__/www/
  • try_files : $uri $uri/ __PATH__/index.php?$args =404
  • Comportement : Comportement original (template par défaut YunoHost)

2. Manifest et Configuration

manifest.toml

  • Ajout de l'option [install.mode]
  • Choix : ["static", "front-controller", "framework"]
  • Défaut : "static"

config_panel.toml

  • Ajout de la section [main.application_mode]
  • Interface de configuration post-installation

3. Fichiers Sources

sources/www/index.php (Mode Front Controller)

  • Front controller avec routing simple
  • Exemples de routes : /, /about, /contact, /api/test
  • Gestion des erreurs 404

sources/www/public/index.php (Mode Framework)

  • Front controller dans le dossier public
  • Structure de framework moderne
  • Même fonctionnalités que le mode front-controller

4. Scripts d'Installation et Configuration

scripts/install

  • Validation des prérequis PHP pour les modes avancés
  • Choix du template nginx selon le mode
  • Création de la structure de fichiers appropriée
  • Gestion des permissions

scripts/config

  • Validation des changements de mode
  • Migration automatique entre les modes
  • Reconfiguration nginx et structure de fichiers
  • Sauvegarde avant modification

Structure des Fichiers par Mode

Mode Static (Actuel)

/var/www/__APP__/www/
├── index.html
├── index.php (optionnel)
└── autres fichiers...

Mode Front Controller

/var/www/__APP__/www/
├── index.php (front controller)
├── config/
├── src/
├── app/
└── autres dossiers...

Mode Framework

/var/www/__APP__/www/
├── public/
│   ├── index.php (front controller)
│   ├── assets/
│   └── uploads/
├── app/
├── config/
├── src/
├── vendor/
└── storage/

Automatic tests

Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ after creating the PR, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization)

@Thovi98

Thovi98 commented Aug 12, 2025

Copy link
Copy Markdown
Member

!testme

(je n’utilise pas cette app, je lance juste les tests pour vérifier que ça fonctionne comme prévu)

@yunohost-bot

Copy link
Copy Markdown
Contributor

Fingers crossed!
Test Badge

@NemStudio18

Copy link
Copy Markdown
Author

Ok merci 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants