diff --git a/data/docs/00.a. Configuration de départ.md b/data/docs/00.a. Configuration de départ.md index 8a14fc3..90e017a 100644 --- a/data/docs/00.a. Configuration de départ.md +++ b/data/docs/00.a. Configuration de départ.md @@ -1,10 +1,16 @@ #Les étapes de configurations de SAND -il vous faut modifier quelques valeurs dans des fichiers de configuration - - `application/config/app-parameters.php` - - `application/config/bdd-parameters.php` +il vous faut modifier quelques valeurs dans les fichiers de configuration suivant + - `application/config/app-parameters.php.skel` + - `application/config/bdd-parameters.php.skel` - Les autres fichiers contenus dans config servent pour la branche dev + et enlever l'extension `.skel` afin que l'autoload de composer puisse le prendre en compte - Dans le cas où vous voudriez utiliser les conduits vous devrez modifier le fichier `application/config/files/routing.yml`. + Vous pouvez tester une application de base simple en générant le dossier vendor en vous mettant à la racine de l'application et en lançant + `composer update`. Si votre serveur est correctement configurer pour pointer dans le dossier public sur l'index, vous devriez obtenir une application de test avec les fonctionnalités de base. En triturant un peu les fichier contenus dans le dossier `application/include` vous devriez comprendre comment se contruit une application faites avec SAND. + + Les autres fichiers contenus dans config servent pour la branche dev, mais peuvent aussi servir pour votre application. + + Dans le cas où vous choissisez d'utiliser les conduits lors du développement de votre application, + vous devrez modifier le fichier `application/config/files/routing.yml`. \ No newline at end of file diff --git a/data/docs/00.b. Comment bien utiliser les urls.md b/data/docs/00.b. Comment bien utiliser les urls.md index 3fa4e64..f0b9ed3 100644 --- a/data/docs/00.b. Comment bien utiliser les urls.md +++ b/data/docs/00.b. Comment bien utiliser les urls.md @@ -12,6 +12,6 @@ où {page} est le nom : - Du modèle contenu dans `/application/include/modeles/{page}.model` - De la vue contenue dans `/application/include/vues/view/{page}.blade.php` ou `/application/include/vues/view/{page}.html.twig` suivant le moteur de rendu -... +Vous pouvez ainsi récupérer les variables passées en GET dans le contrôlleur depuis `$url_params['varname1']` D’autres types d’urls peuvent être mises en place par la configuration du routing symfony et des conduits, il faut alors renseigner les informations de routage dans le fichier `/application/config/files/routing.yml` et faire correspondre l’url d’accès au Conduit. diff --git a/data/docs/00.c. Comment bien utiliser les commandes console.md b/data/docs/00.c. Comment bien utiliser les commandes console.md index 6857f2e..c5eda82 100644 --- a/data/docs/00.c. Comment bien utiliser les commandes console.md +++ b/data/docs/00.c. Comment bien utiliser les commandes console.md @@ -1 +1,18 @@ -#Comment bien utiliser les commandes dans le framework SAND \ No newline at end of file +#Comment bien utiliser les commandes dans le framework SAND + +Les commandes console du framework sont toutes documentée par l'appel de la méthode help + +Par exemple pour voir les méthodes associés à la commande page vous pourvez lancer la commande suivante depuis le dossier console: + +`php bin.php page:help` + +et vous verrez les différentes méthodes qui y sont associées. + +Typiquement sur un projet on peut soit ajouter les fichiers manuellement quand on a l'habitude, soit aussi profiter des commandes: +`action`,`conduit`,`module` et `page` + +Si vous avez a videz le cache des vues et des logs vous pouvez utiliser la commande +`php bin.php cache:clear` +quand a +`php bin.php cache:stabilize` +vous permet de vider le cache des vues blade et/ou twig \ No newline at end of file diff --git a/data/docs/00.f. Comment fonctionnent les objets de sessions.md b/data/docs/00.f. Comment fonctionnent les objets de sessions.md new file mode 100644 index 0000000..6d38e1e --- /dev/null +++ b/data/docs/00.f. Comment fonctionnent les objets de sessions.md @@ -0,0 +1,14 @@ +# Comment fonctionnent les objets de sessions + +le dossier `application/objets` contient les classes qui sont utilisés par les sessions, vous trouverez dans ce dossier les classes suivantes: + + - `Session.php` qui contient les méthodes permettant de créer les sessions, dans une application moderne il est courant de définir des droits sur les pages par un système d'authentification, ici SAND ne déroge pas à la règle et dans les fichiers .model possèdent une variable `authentification` qui peut prendre les valeurs `yes` ou `no`, ainsi le framework appelera automatiquement la méthode `createAndTestSession()` dans les controlleurs, si cette variable est défini à `no`, alors seule la méthode `sessionStart()` sera appelée, ceci afin que les alertes et l'historique puissent fonctionner. + Malheureusement les conduits et les traitements ne disposent pas d'un tel garde d'authentification, mais vous comprendrez qu'il est simple d'ajouter cette méthode au début d'un code de traitement ou de conduit. + + - `Alert.php` contient quelques méthodes simples qui utilise la variable `$_SESSION`, elle est vidée a chaque génération de page sauf dans le cas des traitements, ainsi automatiquement une alerte peut être définie à afficher sur la page de redirection + + - `History.php` permet d'obtenir à tout moment la page précédente de l'application, ainsi il est plus simple de rediriger les pages de traitement vers la page qui demande le traitement. Souvent dans les applications modernes vous avez un traitement qui doit être effectué depuis plusieurs pages cela permet de connaitre celle dont on provient sans passer par la variable serveur `$_SERVER["HTTP_REFERER"]` qui n'est pas toujours accessible. + + - `XssToken.php` permet de définir un token dans la variable `$_SESSION` afin de protéger les formulaires de l'application contre la faille XSS. + + Néanmoins il est possible que ce dossier contienne d'autres classes qui peuvent être utile, à vous de le fournir suivant les demandes de votre application. \ No newline at end of file diff --git a/data/docs/00.g. Comment faire évoluer une application SAND.md b/data/docs/00.g. Comment faire évoluer une application SAND.md new file mode 100644 index 0000000..421c7fb --- /dev/null +++ b/data/docs/00.g. Comment faire évoluer une application SAND.md @@ -0,0 +1,7 @@ +#Comment faire évoluer une application écrite avec le framework SAND ? + +Tout d’abord, une fois l’application créé, toutes les ressources sont téléchargée par composer et le fichier composer.lock est garant de la stabilité des dépôts auxquels l’application fait appel. Donc normalement il ne sera pas nécessaire de faire évoluer ces ressources. + +Néanmoins passer vers une nouvelle version de php par exemple de la 5.6 à la 8 nécessite des connaissances évolué des fonctions dépréciées entre les versions de PHP. SAND framework est php 8 ready, néanmoins certaines lib ne fonctionne que sur php7.3, mais celles-ci une fois installée ne changeront pas au cours du temps car elles sont directement accessibles depuis le dossier vendor. + +Si vous utilisez les SPA vues.js, pensez à télécharger la version que vous utilisez afin de stabiliser votre application dans le temps, afin qu'elle ne consomme pas des ressources inutiles depuis le web. diff --git a/data/docs/02. Le controleur de base.md b/data/docs/02. Le controleur de base.md index fde7ab7..53d9eda 100644 --- a/data/docs/02. Le controleur de base.md +++ b/data/docs/02. Le controleur de base.md @@ -8,6 +8,9 @@ name : name page_title : Page de l'application description : Description de la page engine : blade +authentification : no +ariane : {acceuil, name} +arianelink : {index, name} params1 : {val1,val2} params2 : val ``` diff --git a/data/docs/04.a. Les vues Twig.md b/data/docs/04.a. Les vues Twig.md index 1668383..2b25230 100644 --- a/data/docs/04.a. Les vues Twig.md +++ b/data/docs/04.a. Les vues Twig.md @@ -8,7 +8,222 @@ Elles sont chargées dans cette ordre: ainsi la vue standard peut étendre de `application/include/vues/layout/body.html.twig` ```php + +{% extends "system.html.twig" %} + +{% block body %} + +
+ +
+
+ +
+
+ + + + + +
+
+ Vous êtes connecté en tant que {{session('user_login')}} + Se Deconnecter +
+
+ + + {%if ariane is defined %} + + {% endif %} +
+
+ + + {% if not session('alerts') == null %} + {% for alert in session('alerts') %} + + {% endfor %} + {% endif %} + + + {% block content %}{% endblock %} + +
+
+ + + + + +
+ +{% endblock %} + ``` qui étends de `application/include/vues/system/system.html.twig` ```php + + + + {% block head %} + {{page_title}} + + + + + + + + + + + + + + + + + + + + + + + + + {% block topCss %} + + + {% endblock %} + {% endblock %} + + + +{% block topJavascript %}{% endblock %} + +{% block body %}{% endblock %} + +{% block bottomJavascript %} + + + +{# +SCRIPT JS permettant de ne valider qu'une seule fois un formulaire +ATTENTION tous les formulaires sont affecté +Lors d'une validation bootstrap personnalisé veuillez utilisé +la class do-resubmit sur le formulaire afin de permettre +l'activation supplémentaire du bouton. +#} + +{% endblock %} + + ``` \ No newline at end of file diff --git a/data/docs/04.b. Les vues Blade.md b/data/docs/04.b. Les vues Blade.md index 31b602e..cc03da8 100644 --- a/data/docs/04.b. Les vues Blade.md +++ b/data/docs/04.b. Les vues Blade.md @@ -8,43 +8,250 @@ Elles sont chargées dans cette ordre: ainsi la vue standard peut étendre de `application/include/vues/layout/body.blade.php` ```php -@extends('system') - -@section('body') - - @section('sidebar') - This is the master sidebar. - @show - -
- @yield('content') -
- +@extends('system') + +@section('body') + +
+ +
+
+ +
+
+ + + + + + @if(isset($authentification) && $authentification == 'yes') +
+
+ Vous êtes connecté en tant que {{$_SESSION['user_login']}} + Se Deconnecter +
+
+ @endif + + + + @if (isset($ariane)) + + @endif + + +
+
+ + + @if(isset($_SESSION['alerts'])) + @foreach($_SESSION['alerts'] as $alert) + + @endforeach + @endif + + @yield('content') + +
+
+ + + + + +
+ @endsection + ``` qui étends de `application/include/vues/system/system.blade.php` ```php - - - - {{$page_title}} - - - @section('top-css') - @endsection - - - - -@section('top-javascript') -@endsection - -@yield('body') - -@section('bottom-javascript') -@endsection - - - + + + + + {{$page_title}} + + + + + + + + + + + + + + + + + + + + + + + + + @section('top-css') + + + @if(\MVC\Classe\Browser::get() == 'Internet Explorer') + + + @endif + @show + + + + + +@section('top-javascript') + @if(\MVC\Classe\Browser::get() == 'Internet Explorer') + + + + + + + + @endif +@show + +@yield('body') + +@section('bottom-javascript') + + + + @if(\MVC\Classe\Browser::get() !== 'Internet Explorer') + + @endif +@show + + + ``` \ No newline at end of file diff --git a/data/docs/04.c. Les vues Blade avec SPA(vuejs).md b/data/docs/04.c. Les vues Blade avec SPA(vuejs).md index 71dcec5..34697e4 100644 --- a/data/docs/04.c. Les vues Blade avec SPA(vuejs).md +++ b/data/docs/04.c. Les vues Blade avec SPA(vuejs).md @@ -6,4 +6,83 @@ Elles sont chargées dans le même ordre que les vues Blade normale: * application/include/vues/layout * application/include/vues/view -Cependant il faut inclure les biblitohèques Vue.js dans la page et coder à la mimine la SPA \ No newline at end of file +Cependant il faut inclure les biblitohèques Vue.js dans la page et coder à la mimine la SPA +par exemple: + +```php +@section('top-javascript') + @parent + + +@endsection + +@section('content') +

%PAGE% - VUE.js Controlleur

+


+
+
+ +
+
+ +
+
+

+ @{{ item.title }} +

+
+
+
+

+ @{{ item.description.slice(0, 300) + "..." }} +

+
+
+ Year : @{{ item.release_date }} + Director : @{{ item.director }} + Producer : @{{ item.producer }} +
+
+
+ +
+@endsection + +@section('bottom-javascript') + @parent + +@endsection +``` \ No newline at end of file diff --git a/data/docs/05. Les Actions dans les vues.md b/data/docs/05. Les Actions dans les vues.md index d0b8cd2..3ec6902 100644 --- a/data/docs/05. Les Actions dans les vues.md +++ b/data/docs/05. Les Actions dans les vues.md @@ -53,14 +53,17 @@ class DefaultAction extends Action } ``` -avec cet accès dans la vue: +avec cet accès dans une vue blade: ```php -{{\MVC\Classe\ControlleurAction::inserer('default',[])}} {{\MVC\Classe\ControlleurAction::inserer('default.default',[4,5,6])}} -{{\MVC\Classe\ControlleurAction::inserer('default.variableSlug',['var1','var2'])}} - {{\MVC\Classe\ControlleurAction::inserer('default.makeHttp11',[])}} ``` +ou avec cet accès dans une vue twig: +```php +{{ action('default.defaultTwig',[4,5,6]) }} +{{ action('default.makeHttp11',[]) }} +``` + il faut absolument que l'action retourne du texte soit par la la méthode `render` soit par un `système de tampon` \ No newline at end of file diff --git a/data/docs/06. Le conduit Symfony.md b/data/docs/06. Le conduit Symfony.md index f4db58c..abd5c27 100644 --- a/data/docs/06. Le conduit Symfony.md +++ b/data/docs/06. Le conduit Symfony.md @@ -5,6 +5,8 @@ un controlleur similaire a Symfony qui est dénomé ici Conduit car il prend en paramètre une route défini dans le fichier routing.yml. Cette fonctionnalité permet de choisir la route indépendamment du moteur. +Elle est utlie aussi pour créer des appels Curl et Ajax. + il faut instancier le fichier `application/config/files/routing.yml` avec la route de base et les routes que vous voulez conduire, par exemple: ```yml @@ -48,3 +50,4 @@ class FooConduit extends Conduit } } ``` +Vous remarquerez que les variables passé en GET sont obtenu dans le conduit par `$this->varname`. \ No newline at end of file diff --git a/data/docs/07.a. modules - configuration.md b/data/docs/07.a. modules - configuration.md index 1a06eb0..8dfa5db 100644 --- a/data/docs/07.a. modules - configuration.md +++ b/data/docs/07.a. modules - configuration.md @@ -1,29 +1,37 @@ -#Comment Configurer un module Symfony ou tout autre application php +#Comment Configurer un module ou tout autre application php il vous faut instancier trois fichiers: + le modèle (.model) contenant le nom de la page qui porte le model -ici : `application/include/modeles/syf51.model` +ici : `application/include/modeles/my_module.model` ```yaml -name : syf51 +name : my_module page_title : Accueil de l'application modulaire description : zatou stra bracadabla -params : params +engine : blade +ariane : {my_module_name} +arianelink : {my_module} ``` -le controlleur (.php) contenant ce code qui doit être automatisé -ici: `application/include/controlleurs/syf51.php` +le controlleur (.php) contenant ce code +ici: `application/include/controlleurs/my_module.php` ```php $app); ``` -et déclarer le module dans `\application\modules\setup\registre.model` +le template (.blade.php) contenant ce code +ici: `application/include/vues/view/my_module.php` +```php +{{$app->load('module_type')}} +``` +aussi il vous faudra déclarer le module dans `\application\modules\setup\registre.model` par une ligne suplémentaire: ```yaml -syf51 : Application permettant de tester l'intégration d'un module avec symfony5.0.99 +my_module : Application permettant de tester l'intégration d'un module ``` -si besoin et que le module n'existe pas il vous faudras coder et modifier -le fichier `/application/class/Modular.php` voir peut-être `/application/class/ModularRegister.php` +ainsi que le dossier `\application\module\my_module` + +si besoin et que le type du module n'existe pas il vous faudra ajouter le type du module en modifiant le fichier `/application/class/Modular.php` et les méthodes `__construct` et `load` Good Luck ! \ No newline at end of file diff --git a/data/docs/07.b. modules - comment bien les utiliser.md b/data/docs/07.b. modules - comment bien les utiliser.md index 23e9e73..5b3934f 100644 --- a/data/docs/07.b. modules - comment bien les utiliser.md +++ b/data/docs/07.b. modules - comment bien les utiliser.md @@ -1 +1,10 @@ -#Comment bien utiliser les modules \ No newline at end of file +#Comment bien utiliser les modules + +Simplement vous pouvez tester les intégrations prévues dans le FrameWork avec la commande `php bin.php module:add` ainsi vous aurez le choix d'intégrer en quelques modifications à la mimine un module Symfony ou Laravel. Pour cela choisissez les paramètres de base afin que l'installation se passe bien. + +Il faut comprendre qu'un module Symfony ne peut fonctionner qu'avec un template `blade`, de même manière un module Laravel ne peut fonctionner qu'avec un template `twig`. +Basiquement toute application utilisant le système de randu `twig` doit être intégré avec un template-sand `blade` et l'inverse. + +Au niveau du sysème de routage, il faut absolument inclure le path du module, par exemple pour un module nommé 'SciFi', il faudra inclure dans les routes des controlleurs la chaine de caractères `\SciFi` devant toutes les routes de vos controlleurs. + +Il en est de même pour les autres modules : Wordpress, GitList, PhpList, Pretashop, ... ainsi que pour tous les autres modules que vous voudriez intégrer par vous-même. \ No newline at end of file diff --git a/data/docs/13. modules - Laravel.md b/data/docs/13. modules - Laravel.md new file mode 100644 index 0000000..6edc24e --- /dev/null +++ b/data/docs/13. modules - Laravel.md @@ -0,0 +1 @@ +#Comment ajouter un module Symfony \ No newline at end of file diff --git a/data/docs/13. Comment faire des appels récursifs en curl sur une API RESTFULL codée avec le framework.md b/data/docs/19. Comment faire des appels récursifs en curl sur une API RESTFULL codée avec le framework.md similarity index 100% rename from data/docs/13. Comment faire des appels récursifs en curl sur une API RESTFULL codée avec le framework.md rename to data/docs/19. Comment faire des appels récursifs en curl sur une API RESTFULL codée avec le framework.md