Vous êtes connecté en tant que anonymous Se Deconnecter
Browse code

ajout d'un test sur le routage Symfony afin de permettre son utilisation dans le cadre du chargement de page cms (une page un routing ou une page standard)

TODO: ajouter les modules gestionMedia gestionMenu gestionPage (gestionBackendCms)

FIXME: appel curl ou fopen d'une methode http depuis une action ou un controlleur.

TODO: sécuriser les accès HTTP1.1 par un fichier config similaire a l'applet Discourse faite pour Tinternet

TODO: ajouter un plug-in symfony permettant de charger un utilisateur dans les apps a partir de l'authentification multiple

TODO: lire les documentation officielles provenant des 4 plate-formes tranquillement afin de comprendre commet doit on tester ces type d'auth quitte a créé un sous domaine particulier directement hebergé sur gittea
-->Sécuriser le serveur de dev

Emmanuel ROY authored on 05/12/2019 00:50:23
Showing 4 changed files
... ...
@@ -2,28 +2,53 @@
2 2
 
3 3
 namespace MVC\Classe;
4 4
 
5
+use Symfony\Component\Config\FileLocator as FileLocator;
6
+use Symfony\Component\Routing\Matcher\UrlMatcher as UrlMatcher;
7
+use Symfony\Component\Routing\RequestContext as RequestContext;
8
+use Symfony\Component\Routing\Loader\YamlFileLoader as YamlFileLoader;
9
+use Symfony\Component\Routing\Exception\ResourceNotFoundException;
10
+
5 11
 require APPLICATION_PATH . DIRECTORY_SEPARATOR . "parameters.php";
6 12
 
7 13
 class Application
8 14
 {
9 15
     public $http;
10
-	public $url;
16
+    public $url;
11 17
     public $browser;
12 18
 
13
-	
14
-	public function __construct(){
19
+
20
+    public function __construct(){
15 21
         $this->http = new HttpMethod();
16 22
         $this->browser = new Browser();
17 23
         $this->url = new Url($this->http->method, $this->browser->isAppRequest());
18
-	}
24
+    }
25
+
26
+    public function launch(){
27
+        try {
28
+            //load config file
29
+            $fileLocator = new FileLocator(array(CONFIG_PATH . DIRECTORY_SEPARATOR . 'files'));
30
+            $loader = new YamlFileLoader($fileLocator);
31
+            $routes = $loader->load('routing.yml');
32
+
33
+            //create context
34
+            $context = new RequestContext('/');
35
+            $matcher = new UrlMatcher($routes, $context);
19 36
 
20
-	public function launch(){
37
+            // Find the current route
38
+            $parameters = $matcher->match($_SERVER['REQUEST_URI']);
21 39
 
22
-		$controlleur = new Controlleur($this);
23
-		//si la page n'est un controlleur d'action alors on affiche l'écran
24
-		if(!$this->url->page['control']) {
40
+            echo '<pre>';
41
+            print_r($parameters);
42
+            die();
43
+        } catch (ResourceNotFoundException $e) {
44
+            echo $e->getMessage();
45
+        }
46
+
47
+        $controlleur = new Controlleur($this);
48
+        //si la page n'est un controlleur d'action alors on affiche l'écran
49
+        if(!$this->url->page['control']) {
25 50
             print($controlleur->vue->ecran);
26 51
         }
27
-	}
28
-	
52
+    }
53
+
29 54
 }
... ...
@@ -101,9 +101,9 @@ class Url
101 101
 
102 102
         if (!file_exists($pageFile)) {
103 103
             if ($appRequest) {
104
-                $page['name'] = 'error';
105
-            } else {
106 104
                 $page['name'] = 'Error';
105
+            } else {
106
+                $page['name'] = 'error';
107 107
             }
108 108
         }
109 109
         $this->page = $page;
110 110
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+home_route:
2
+  path:     /
3
+  defaults: { controller: 'FooController::indexAction' }
4
+
5
+foo_route:
6
+  path:     /foo
7
+  defaults: { controller: 'FooController::indexAction' }
8
+
9
+foo_placeholder_route:
10
+  path:     /foo/{id}
11
+  defaults: { controller: 'FooController::loadAction' }
12
+  requirements:
13
+    id: '[0-9]+'
14
+
... ...
@@ -10,13 +10,17 @@
10 10
         }
11 11
     },
12 12
     "require": {
13
-
14
-        "php": "^7.1.3",
13
+      "php": "^7.1.3",
15 14
       "ext-json": "*",
16 15
       "ext-curl": "*",
17
-        "windwalker/renderer": "3.*",
18
-        "illuminate/view": "4.*",
16
+      "windwalker/renderer": "3.*",
17
+      "illuminate/view": "4.*",
19 18
       "hybridauth/hybridauth": "~3.0",
20
-      "neitanod/forceutf8": "^2.0"
19
+      "neitanod/forceutf8": "^2.0",
20
+      "symfony/routing": "3.4.36",
21
+      "symfony/http-foundation": "~2.8",
22
+      "symfony/yaml": "~4.0",
23
+      "symfony/expression-language": "~3.0",
24
+      "symfony/config": "3.3.2"
21 25
     }
22 26
 }