update:
- amélioration modèle objet du MVC - ajout des paramètres en $_GET provenant de l'url - ajout de deux pages pour tester tout çà
This commit is contained in:
parent
22df2ca781
commit
d7ab71841e
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Application
|
||||
|
@ -9,6 +16,8 @@ class Application
|
|||
public $browser;
|
||||
public $route;
|
||||
|
||||
public $controlleur;
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -23,10 +32,10 @@ class Application
|
|||
|
||||
public function launch()
|
||||
{
|
||||
$controlleur = new Controlleur($this);
|
||||
$this->controlleur = new Controlleur($this);
|
||||
//si la page n'est un controlleur d'action alors on affiche l'écran
|
||||
if (!$this->url->page['control']) {
|
||||
print($controlleur->vue->ecran);
|
||||
print($this->controlleur->vue->ecran);
|
||||
//si on affiche l'écran alors on vide les alertes de la session
|
||||
\MVC\Object\Alert::remove();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Controlleur
|
||||
|
@ -36,6 +43,10 @@ class Controlleur
|
|||
//si c'est une page de traitement PRG on appelle le fichier de controle de formulaire
|
||||
} elseif ($application->url->page['control']) {
|
||||
$url_params = $application->url->page['params'];
|
||||
foreach($application->url->page['params'] as $key => $value){
|
||||
$_GET[$key] = $value;
|
||||
$url_params[$key] = $value;
|
||||
}
|
||||
require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
|
||||
//sinon c'est une page MVC normale
|
||||
} else {
|
||||
|
@ -46,10 +57,10 @@ class Controlleur
|
|||
// ainsi on instancie la page précédente et le javascript et le css asynchrone
|
||||
\MVC\Object\Session::createAndTestSession();
|
||||
}
|
||||
//fixme: doit on passer l'application entière dans la vue ou seulement $application->modele->page ?
|
||||
$this->vue = new Vue($this);
|
||||
$this->vue = new Vue($this->modele->page);
|
||||
}
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function callHttpResponse($application)
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Modele
|
||||
|
@ -31,7 +38,7 @@ class Modele
|
|||
}
|
||||
}
|
||||
|
||||
$this->page['url_params'] = $base_param['params'];
|
||||
$this->page['all_params'] = $base_param['params'];
|
||||
//export nom a nom les variable dans la superglobale $_GET
|
||||
foreach($base_param['params'] as $key => $value){
|
||||
$_GET[$key] = $value;
|
||||
|
@ -39,11 +46,12 @@ class Modele
|
|||
} else {
|
||||
$this->page['name'] = $base_param['name'];
|
||||
$this->page['description'] = $base_param['description'];
|
||||
$this->page['params'] = $base_param['params'];
|
||||
$this->page['all_params'] = $base_param['params'];
|
||||
//export nom a nom les variable dans la superglobale $_GET
|
||||
foreach($base_param['params'] as $key => $value){
|
||||
$_GET[$key] = $value;
|
||||
}
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Url
|
||||
|
@ -59,7 +66,7 @@ class Url
|
|||
$numParts = count($urlParts);
|
||||
//s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony ou tout autre module
|
||||
if ($numParts%2 != 0) {
|
||||
//si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur
|
||||
//si un module symfony n'est pas reférencé avec le nom de la page, on renvoi une erreur
|
||||
if (!in_array($page['name'], $this->registre->getIndex())) {
|
||||
$page['name'] = 'error';
|
||||
$page['params'] = array();
|
||||
|
@ -67,9 +74,10 @@ class Url
|
|||
return;
|
||||
} else {
|
||||
foreach ($urlParts as $key => $value) {
|
||||
$values[] = $value;
|
||||
$keys[] = $key;
|
||||
$values[] = $value;
|
||||
$keys[] = $value;
|
||||
}
|
||||
//$page['params'] = array_combine($keys, $values);
|
||||
$page['params'] = $values;
|
||||
}
|
||||
|
||||
|
@ -236,18 +244,13 @@ class Url
|
|||
} else {
|
||||
$scheme = 'http';
|
||||
}
|
||||
$base_url = $scheme . "://" . $url ;
|
||||
$base_url = $scheme . "://" . $url . "/";
|
||||
$url = $base_url;
|
||||
}else{
|
||||
$url = PATH_URL;
|
||||
}
|
||||
if(str_ends_with($url . "/" . BASE_SERVER_DIRECTORY , '/')){
|
||||
return substr($url . "/" . BASE_SERVER_DIRECTORY,0,-1);
|
||||
}else {
|
||||
return $url . "/" . BASE_SERVER_DIRECTORY;
|
||||
}
|
||||
return $url . BASE_SERVER_DIRECTORY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiens le fragment depuis une variable serveur,
|
||||
* ce qui est selon moi possible avec une bonne configuration serveur
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Vue
|
||||
|
@ -7,10 +14,20 @@ class Vue
|
|||
public $ecran;
|
||||
public $block_body;
|
||||
|
||||
public function __construct($application)
|
||||
public function __construct($page_params)
|
||||
{
|
||||
$templateData = array();
|
||||
extract($application->modele->page);
|
||||
//$templateData = array();
|
||||
$url_params = array();
|
||||
$templateData = $page_params;
|
||||
|
||||
extract($page_params);
|
||||
//de base on ajoute les parametres du .model et ceux provenant de l'url
|
||||
foreach ($page_params['all_params'] as $key => $value) {
|
||||
//$templateData[$key] = $value;
|
||||
$_GET[$key] = $value;
|
||||
$url_params[$key] = $value;
|
||||
}
|
||||
|
||||
|
||||
if(!isset($engine)){$engine = 'blade';}
|
||||
$flag_exist = false;
|
||||
|
@ -50,16 +67,12 @@ class Vue
|
|||
$renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH . DIRECTORY_SEPARATOR . "cache"));
|
||||
}
|
||||
|
||||
|
||||
//de base on ajoute les parametres du .model et ceux provenant de l'url
|
||||
foreach ($application->modele->page as $key => $value) {
|
||||
$templateData[$key] = $value;
|
||||
}
|
||||
//WINWALKER TEMPLATING ENGINE RENDER
|
||||
echo $renderer->render($name, $templateData);
|
||||
} else {
|
||||
include CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php';
|
||||
}
|
||||
$this->ecran = ob_get_clean();
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
6
application/include/controlleurs/get-params.php
Normal file
6
application/include/controlleurs/get-params.php
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
\MVC\Classe\Dumper::dump($_GET);
|
||||
\MVC\Classe\Dumper::dump($url_params);
|
||||
\MVC\Classe\Dumper::dump($templateData);
|
||||
\MVC\Classe\Dumper::dump($GLOBALS);
|
|
@ -8,5 +8,7 @@ use MVC\Classe\Logger;
|
|||
|
||||
\MVC\Classe\ControlleurAction::inserer('default.makeHttp11', []);
|
||||
|
||||
$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge');
|
||||
$templateData["templating_a"] ='blade';
|
||||
$templateData["templating_b"] ='twig';
|
||||
$templateData["templating_c"] ='edge';
|
||||
Logger::addLog('ok', 'Hello world');
|
||||
|
|
7
application/traitements/traitement-get.php
Normal file
7
application/traitements/traitement-get.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
\MVC\Object\Session::createAndTestSession();
|
||||
|
||||
\MVC\Classe\Dumper::dump($_GET);
|
||||
\MVC\Classe\Dumper::dump($url_params);
|
||||
\MVC\Classe\Dumper::dump($GLOBALS);
|
2
console/output/.gitignore
vendored
Normal file
2
console/output/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
*
|
||||
!.gitignore
|
Loading…
Reference in a new issue