... | ... |
@@ -2,9 +2,10 @@ |
2 | 2 |
<module type="WEB_MODULE" version="4"> |
3 | 3 |
<component name="NewModuleRootManager"> |
4 | 4 |
<content url="file://$MODULE_DIR$"> |
5 |
- <sourceFolder url="file://$MODULE_DIR$/../MVC---Objetapplication/objets" isTestSource="false" packagePrefix="MVC\Objets\" /> |
|
6 |
- <sourceFolder url="file://$MODULE_DIR$/../MVC---Objetapplication/class" isTestSource="false" packagePrefix="MVC\Classe\" /> |
|
5 |
+ <sourceFolder url="file://$MODULE_DIR$/../MVC-Modular-WindWalkerapplication/objets" isTestSource="false" packagePrefix="MVC\Objets\" /> |
|
6 |
+ <sourceFolder url="file://$MODULE_DIR$/../MVC-Modular-WindWalkerapplication/class" isTestSource="false" packagePrefix="MVC\Classe\" /> |
|
7 | 7 |
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" /> |
8 |
+ <excludeFolder url="file://$MODULE_DIR$/vendor/hybridauth/hybridauth" /> |
|
8 | 9 |
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/container" /> |
9 | 10 |
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/events" /> |
10 | 11 |
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/filesystem" /> |
... | ... |
@@ -11,6 +11,7 @@ |
11 | 11 |
<path value="$PROJECT_DIR$/vendor/illuminate/container" /> |
12 | 12 |
<path value="$PROJECT_DIR$/vendor/symfony/finder" /> |
13 | 13 |
<path value="$PROJECT_DIR$/vendor/windwalker/structure" /> |
14 |
+ <path value="$PROJECT_DIR$/vendor/hybridauth/hybridauth" /> |
|
14 | 15 |
</include_path> |
15 | 16 |
</component> |
16 | 17 |
<component name="PhpProjectSharedConfiguration" php_language_level="7.1" /> |
... | ... |
@@ -1,6 +1,6 @@ |
1 |
-# MVC - en Programmation Orienté Objet |
|
1 |
+# Modular Symfony Application |
|
2 | 2 |
--- |
3 |
-Cette architecture MVC Objet est composée d'un layout HTML5 Standard |
|
3 |
+Cette architecture MVC Objet est composée d'un layout Blade (Laravel) |
|
4 | 4 |
|
5 | 5 |
Les urls d'accès sont de type www.domain.tld/page/varname1/varvalue1/varname2/varvalue2/ ... |
6 | 6 |
|
... | ... |
@@ -10,7 +10,7 @@ Afin de créer une nouvelle page vous devez instancier trois fichiers contenant |
10 | 10 |
"application > include > controlleurs > mapage.php" contenant: |
11 | 11 |
> les commandes permettant de gérer un formulaire |
12 | 12 |
> un ou plusieurs accès à la base de données |
13 |
-> les variables ainsi instanciées permettent l'affichage dans la vue |
|
13 |
+> les variables instanciées dans $templateData permettent l'affichage dans la vue blade |
|
14 | 14 |
|
15 | 15 |
"application > include > modeles > mapage.model" contenant |
16 | 16 |
>les variables spécifiques à la page de l'application exemple: |
... | ... |
@@ -19,10 +19,9 @@ name : le nom de mapage |
19 | 19 |
description : ma description pour les moteur de recherche |
20 | 20 |
params : paramètre(s) supplémentaire(s) |
21 | 21 |
``` |
22 |
+"application > include > vues > view > mapage.blade.php contenant |
|
23 |
+> le layout blade a instancier |
|
22 | 24 |
|
23 |
-"application > include > vues > mapage.phtml" contenant |
|
24 |
->les blocs html qui seront affichés dans le layout standard |
|
25 |
- |
|
26 |
-Je ne peut que vous proposer de regarder dans le dossier layout afin de comprendre comment cela est affiché! |
|
27 |
- |
|
28 |
-pour le reste, c'est a vous de voir, mais c'est une architecture fonctionnelle à 2.5 vitesses |
|
25 |
+pour les modules symfony, c'est un peu plus compliqué il faut instancier ces trois précédents fichiers en faisant appel la class Modular, |
|
26 |
+ne pas oublier de référencer le module dans le dossier modules > setup > registre.model |
|
27 |
+et faire correspondre le nom du dossier avec le registre, ici l'exemple est syf43. |
|
29 | 28 |
\ No newline at end of file |
... | ... |
@@ -18,8 +18,8 @@ class Controlleur{ |
18 | 18 |
$url_params = $application->url->page['params']; |
19 | 19 |
require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php'; |
20 | 20 |
} else { |
21 |
- $this->modele = new modele($application->url->page); |
|
22 |
- $this->vue = new vue($this); |
|
21 |
+ $this->modele = new Modele($application->url->page); |
|
22 |
+ $this->vue = new Vue($this); |
|
23 | 23 |
} |
24 | 24 |
} |
25 | 25 |
|
... | ... |
@@ -10,8 +10,10 @@ class Url |
10 | 10 |
|
11 | 11 |
public function __construct(){ |
12 | 12 |
|
13 |
+ //on créé le registre des modules symfony |
|
13 | 14 |
$this->registre = new \MVC\Classe\ModularRegister(); |
14 | 15 |
|
16 |
+ //définition des parametres de base |
|
15 | 17 |
$page = array(); |
16 | 18 |
$page['name'] = 'accueil'; |
17 | 19 |
$page['description'] = ""; |
... | ... |
@@ -42,18 +44,19 @@ class Url |
42 | 44 |
|
43 | 45 |
} |
44 | 46 |
|
45 |
- //vérification du nombre de parametres: s'il n'existe pas autant de clé que |
|
46 |
- // de valeurs on sort de la fonction et on renvoie une page d'erreur. |
|
47 |
+ //vérification du nombre de parametres: |
|
47 | 48 |
$numParts = count($urlParts); |
48 |
- |
|
49 |
+ //s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony |
|
49 | 50 |
if ( $numParts%2 != 0 ) { |
51 |
+ //si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur |
|
50 | 52 |
if( !in_array($page['name'], $this->registre->getIndex()) ){ |
51 | 53 |
$page['name'] = 'error'; |
52 | 54 |
$page['params'] = array(); |
53 | 55 |
$this->page = $page; |
54 | 56 |
return; |
55 | 57 |
} |
56 |
- }else if ( $numParts != 0 ){ |
|
58 |
+ //cas d'utilisation normal : il existe autant de clé que de valeurs |
|
59 |
+ } else if ( $numParts != 0 ) { |
|
57 | 60 |
$values = array(); |
58 | 61 |
$keys = array(); |
59 | 62 |
foreach( $urlParts as $key => $value ){ |
... | ... |
@@ -15,24 +15,25 @@ class Vue{ |
15 | 15 |
$templateData = array(); |
16 | 16 |
extract( $baseControlleur->modele->page ); |
17 | 17 |
|
18 |
- //print_r($name); |
|
19 |
- |
|
20 | 18 |
ob_start(); |
19 |
+ |
|
20 |
+ //l'inclusion du controlleur doit renvoyer le tableau $templateData |
|
21 | 21 |
require CONTROLLER_PATH.DIRECTORY_SEPARATOR.$name.'.php'; |
22 | 22 |
|
23 | 23 |
$paths = new \SplPriorityQueue; |
24 |
+ |
|
24 | 25 |
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."system", 100); |
25 |
- $paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."templating", 200); |
|
26 |
- //$paths->insert('path/to/theme', 300); |
|
27 |
- $renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH.DIRECTORY_SEPARATOR."cache")); |
|
28 |
- echo $renderer->render( $name , $templateData); |
|
26 |
+ $paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."layout", 200); |
|
27 |
+ $paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."view", 300); |
|
29 | 28 |
|
29 |
+ $renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH.DIRECTORY_SEPARATOR."cache")); |
|
30 | 30 |
|
31 |
- /*require VIEW_PATH.DIRECTORY_SEPARATOR.$name.'.phtml'; |
|
32 |
- $this->block_body = ob_get_clean(); |
|
31 |
+ //de base on ajoute les parametres du .model et ceux provenant de l'url |
|
32 |
+ foreach($baseControlleur->modele->page as $key => $value){ |
|
33 |
+ $templateData[$key] = $value; |
|
34 |
+ } |
|
35 |
+ echo $renderer->render( $name , $templateData); |
|
33 | 36 |
|
34 |
- ob_start(); |
|
35 |
- require LAYOUT_PATH.DIRECTORY_SEPARATOR."standard.phtml";*/ |
|
36 | 37 |
$this->ecran = ob_get_clean(); |
37 | 38 |
|
38 | 39 |
} |
3 | 1 |
deleted file mode 100644 |
... | ... |
@@ -1,14 +0,0 @@ |
1 |
-<html> |
|
2 |
-<head> |
|
3 |
- <title>App Name</title> |
|
4 |
-</head> |
|
5 |
-<body> |
|
6 |
-@section('sidebar') |
|
7 |
- This is the master sidebar. |
|
8 |
-@show |
|
9 |
- |
|
10 |
-<div class="container"> |
|
11 |
- @yield('content') |
|
12 |
-</div> |
|
13 |
-</body> |
|
14 |
-</html> |
|
15 | 0 |
\ No newline at end of file |
7 | 1 |
deleted file mode 100644 |
... | ... |
@@ -1,20 +0,0 @@ |
1 |
-<!doctype html> |
|
2 |
- |
|
3 |
-<html lang="fr"> |
|
4 |
- |
|
5 |
-<head> |
|
6 |
- <meta charset="utf-8"> |
|
7 |
- |
|
8 |
- <title><?php echo $page_title; ?></title> |
|
9 |
- <meta name="description" content= "<?php echo $description; ?>" > |
|
10 |
- |
|
11 |
- <!-- Mobile viewport optimized: h5bp.com/viewport --> |
|
12 |
- <meta name="viewport" content="width=device-width"> |
|
13 |
- |
|
14 |
- <!-- Les favicons --> |
|
15 |
- <link rel="apple-touch-icon" href="<?php echo PATH_URL; ?>apple-touch-icon.png"> |
|
16 |
- <link rel="icon" href="<?php echo PATH_URL; ?>favicon.png" /> |
|
17 |
- |
|
18 |
- <?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."top-css.phtml"; ?> |
|
19 |
- |
|
20 |
-</head> |
4 | 1 |
deleted file mode 100644 |
... | ... |
@@ -1,27 +0,0 @@ |
1 |
-<?php |
|
2 |
-define('LAYOUT_TEMPLATE',dirname(__FILE__).DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'standard'); |
|
3 |
- |
|
4 |
-require LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."head.phtml"; |
|
5 |
-?> |
|
6 |
- |
|
7 |
- |
|
8 |
-<body> |
|
9 |
- |
|
10 |
- <!-- Prompt IE 6 users to install Chrome Frame. Remove this if you support IE 6. |
|
11 |
- chromium.org/developers/how-tos/chrome-frame-getting-started --> |
|
12 |
- <!--[if lt IE 7]><p class=chromeframe>Your browser is <em>ancient!</em> <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p><![endif]--> |
|
13 |
- |
|
14 |
- <?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."header.phtml"; ?> |
|
15 |
- |
|
16 |
- <div class="contents"> |
|
17 |
- <?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."body.phtml"; ?> |
|
18 |
- </div> |
|
19 |
- |
|
20 |
- <?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."footer.phtml"; ?> |
|
21 |
- |
|
22 |
- |
|
23 |
- <!-- JavaScript at the bottom for fast page loading --> |
|
24 |
- <?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."bottom-javascript.phtml"; ?> |
|
25 |
- |
|
26 |
-</body> |
|
27 |
-</html> |
28 | 0 |
deleted file mode 100644 |
... | ... |
@@ -1,21 +0,0 @@ |
1 |
-<?php |
|
2 |
-namespace MVC\Module\Setup; |
|
3 |
- |
|
4 |
-class Syf43 { |
|
5 |
- |
|
6 |
- /** |
|
7 |
- * @param none |
|
8 |
- * @return modular_symfony_web |
|
9 |
- */ |
|
10 |
- |
|
11 |
- public function load($name) { |
|
12 |
- ob_start(); |
|
13 |
- require( MODULES_PATH . DIRECTORY_SEPARATOR . $name . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "index.php" ); |
|
14 |
- $modularApp = ob_get_clean(); |
|
15 |
- echo $modularApp; |
|
16 |
- } |
|
17 |
- |
|
18 |
- public static function twigLoader($name){ |
|
19 |
- require MODULES_PATH . DIRECTORY_SEPARATOR . "setup" . DIRECTORY_SEPARATOR . $name . ".twig.class.php"; |
|
20 |
- } |
|
21 |
-} |
|
22 | 0 |
\ No newline at end of file |
... | ... |
@@ -9,5 +9,5 @@ define("MODULES_PATH", APPLICATION_PATH.DIRECTORY_SEPARATOR."modules"); |
9 | 9 |
|
10 | 10 |
require VENDOR_PATH.DIRECTORY_SEPARATOR."autoload.php"; |
11 | 11 |
|
12 |
-$poo_v1 = new \MVC\Classe\Application(); |
|
13 |
-$poo_v1->launch(); |
|
12 |
+$poo_v5 = new \MVC\Classe\Application(); |
|
13 |
+$poo_v5->launch(); |