Application nettoyé,
Ajout de la lib composer hybridauth/hybridauth TODO: integrer hybrid auth sur une page simple d'authentification
This commit is contained in:
parent
f503af84f7
commit
8305007317
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,3 +1,3 @@
|
|||
vendor
|
||||
cache
|
||||
application/include/vues/cache/*
|
||||
/composer.lock
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../MVC---Objetapplication/objets" isTestSource="false" packagePrefix="MVC\Objets\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../MVC---Objetapplication/class" isTestSource="false" packagePrefix="MVC\Classe\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../MVC-Modular-WindWalkerapplication/objets" isTestSource="false" packagePrefix="MVC\Objets\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../MVC-Modular-WindWalkerapplication/class" isTestSource="false" packagePrefix="MVC\Classe\" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/hybridauth/hybridauth" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/container" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/events" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/filesystem" />
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
<path value="$PROJECT_DIR$/vendor/illuminate/container" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
|
||||
<path value="$PROJECT_DIR$/vendor/windwalker/structure" />
|
||||
<path value="$PROJECT_DIR$/vendor/hybridauth/hybridauth" />
|
||||
</include_path>
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="7.1" />
|
||||
|
|
17
README.md
17
README.md
|
@ -1,6 +1,6 @@
|
|||
# MVC - en Programmation Orienté Objet
|
||||
# Modular Symfony Application
|
||||
---
|
||||
Cette architecture MVC Objet est composée d'un layout HTML5 Standard
|
||||
Cette architecture MVC Objet est composée d'un layout Blade (Laravel)
|
||||
|
||||
Les urls d'accès sont de type www.domain.tld/page/varname1/varvalue1/varname2/varvalue2/ ...
|
||||
|
||||
|
@ -10,7 +10,7 @@ Afin de créer une nouvelle page vous devez instancier trois fichiers contenant
|
|||
"application > include > controlleurs > mapage.php" contenant:
|
||||
> les commandes permettant de gérer un formulaire
|
||||
> un ou plusieurs accès à la base de données
|
||||
> les variables ainsi instanciées permettent l'affichage dans la vue
|
||||
> les variables instanciées dans $templateData permettent l'affichage dans la vue blade
|
||||
|
||||
"application > include > modeles > mapage.model" contenant
|
||||
>les variables spécifiques à la page de l'application exemple:
|
||||
|
@ -19,10 +19,9 @@ name : le nom de mapage
|
|||
description : ma description pour les moteur de recherche
|
||||
params : paramètre(s) supplémentaire(s)
|
||||
```
|
||||
"application > include > vues > view > mapage.blade.php contenant
|
||||
> le layout blade a instancier
|
||||
|
||||
"application > include > vues > mapage.phtml" contenant
|
||||
>les blocs html qui seront affichés dans le layout standard
|
||||
|
||||
Je ne peut que vous proposer de regarder dans le dossier layout afin de comprendre comment cela est affiché!
|
||||
|
||||
pour le reste, c'est a vous de voir, mais c'est une architecture fonctionnelle à 2.5 vitesses
|
||||
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,
|
||||
ne pas oublier de référencer le module dans le dossier modules > setup > registre.model
|
||||
et faire correspondre le nom du dossier avec le registre, ici l'exemple est syf43.
|
|
@ -17,6 +17,7 @@ class Application
|
|||
public function launch(){
|
||||
|
||||
$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);
|
||||
}
|
||||
|
|
|
@ -18,8 +18,8 @@ class Controlleur{
|
|||
$url_params = $application->url->page['params'];
|
||||
require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
|
||||
} else {
|
||||
$this->modele = new modele($application->url->page);
|
||||
$this->vue = new vue($this);
|
||||
$this->modele = new Modele($application->url->page);
|
||||
$this->vue = new Vue($this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,8 +10,10 @@ class Url
|
|||
|
||||
public function __construct(){
|
||||
|
||||
//on créé le registre des modules symfony
|
||||
$this->registre = new \MVC\Classe\ModularRegister();
|
||||
|
||||
//définition des parametres de base
|
||||
$page = array();
|
||||
$page['name'] = 'accueil';
|
||||
$page['description'] = "";
|
||||
|
@ -42,18 +44,19 @@ class Url
|
|||
|
||||
}
|
||||
|
||||
//vérification du nombre de parametres: s'il n'existe pas autant de clé que
|
||||
// de valeurs on sort de la fonction et on renvoie une page d'erreur.
|
||||
//vérification du nombre de parametres:
|
||||
$numParts = count($urlParts);
|
||||
|
||||
//s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony
|
||||
if ( $numParts%2 != 0 ) {
|
||||
//si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur
|
||||
if( !in_array($page['name'], $this->registre->getIndex()) ){
|
||||
$page['name'] = 'error';
|
||||
$page['params'] = array();
|
||||
$this->page = $page;
|
||||
return;
|
||||
}
|
||||
}else if ( $numParts != 0 ){
|
||||
//cas d'utilisation normal : il existe autant de clé que de valeurs
|
||||
} else if ( $numParts != 0 ) {
|
||||
$values = array();
|
||||
$keys = array();
|
||||
foreach( $urlParts as $key => $value ){
|
||||
|
|
|
@ -15,24 +15,25 @@ class Vue{
|
|||
$templateData = array();
|
||||
extract( $baseControlleur->modele->page );
|
||||
|
||||
//print_r($name);
|
||||
|
||||
ob_start();
|
||||
|
||||
//l'inclusion du controlleur doit renvoyer le tableau $templateData
|
||||
require CONTROLLER_PATH.DIRECTORY_SEPARATOR.$name.'.php';
|
||||
|
||||
$paths = new \SplPriorityQueue;
|
||||
|
||||
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."system", 100);
|
||||
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."templating", 200);
|
||||
//$paths->insert('path/to/theme', 300);
|
||||
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."layout", 200);
|
||||
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."view", 300);
|
||||
|
||||
$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($baseControlleur->modele->page as $key => $value){
|
||||
$templateData[$key] = $value;
|
||||
}
|
||||
echo $renderer->render( $name , $templateData);
|
||||
|
||||
|
||||
/*require VIEW_PATH.DIRECTORY_SEPARATOR.$name.'.phtml';
|
||||
$this->block_body = ob_get_clean();
|
||||
|
||||
ob_start();
|
||||
require LAYOUT_PATH.DIRECTORY_SEPARATOR."standard.phtml";*/
|
||||
$this->ecran = ob_get_clean();
|
||||
|
||||
}
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
<h1>Accueil</h1>
|
||||
<br /><br />
|
|
@ -1 +0,0 @@
|
|||
<h1>ERREUR poo_v1</h1>
|
13
application/include/vues/layout/body.blade.php
Normal file
13
application/include/vues/layout/body.blade.php
Normal file
|
@ -0,0 +1,13 @@
|
|||
@extends('system')
|
||||
|
||||
@section('body')
|
||||
|
||||
@section('sidebar')
|
||||
This is the master sidebar.
|
||||
@show
|
||||
|
||||
<div class="container">
|
||||
@yield('content')
|
||||
</div>
|
||||
|
||||
@endsection
|
|
@ -1 +0,0 @@
|
|||
<?php $app->load(); ?>
|
|
@ -1,14 +0,0 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>App Name</title>
|
||||
</head>
|
||||
<body>
|
||||
@section('sidebar')
|
||||
This is the master sidebar.
|
||||
@show
|
||||
|
||||
<div class="container">
|
||||
@yield('content')
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
9
application/include/vues/system/system.blade.php
Normal file
9
application/include/vues/system/system.blade.php
Normal file
|
@ -0,0 +1,9 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>{{$page_title}}</title>
|
||||
<meta name="description" lang="fr" content="{{$description}}" />
|
||||
</head>
|
||||
<body>
|
||||
@yield('body')
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +1,4 @@
|
|||
@extends('layout')
|
||||
@extends('body')
|
||||
|
||||
@section('sidebar')
|
||||
@parent
|
|
@ -1,4 +0,0 @@
|
|||
|
||||
<div>
|
||||
<?php echo $this->block_body ?>
|
||||
</div>
|
|
@ -1,2 +0,0 @@
|
|||
|
||||
<script src="<?php echo PATH_URL; ?>js/script.js"></script>
|
|
@ -1,5 +0,0 @@
|
|||
<div>
|
||||
|
||||
<a href="http://github.com/Acksop" >Follow Me on Github</a>
|
||||
|
||||
</div>
|
|
@ -1,20 +0,0 @@
|
|||
<!doctype html>
|
||||
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title><?php echo $page_title; ?></title>
|
||||
<meta name="description" content= "<?php echo $description; ?>" >
|
||||
|
||||
<!-- Mobile viewport optimized: h5bp.com/viewport -->
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<!-- Les favicons -->
|
||||
<link rel="apple-touch-icon" href="<?php echo PATH_URL; ?>apple-touch-icon.png">
|
||||
<link rel="icon" href="<?php echo PATH_URL; ?>favicon.png" />
|
||||
|
||||
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."top-css.phtml"; ?>
|
||||
|
||||
</head>
|
|
@ -1,7 +0,0 @@
|
|||
<div>
|
||||
<h2>Menu Experiments</h2>
|
||||
<ul>
|
||||
<li><a href="<?php echo PATH_URL; ?>accueil">Accueil</a></li>
|
||||
<li><a href="<?php echo PATH_URL; ?>error">Error</a></li>
|
||||
</ul>
|
||||
</div>
|
|
@ -1,2 +0,0 @@
|
|||
|
||||
<link rel="stylesheet" href="<?php echo PATH_URL; ?>css/style.css">
|
|
@ -1,27 +0,0 @@
|
|||
<?php
|
||||
define('LAYOUT_TEMPLATE',dirname(__FILE__).DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'standard');
|
||||
|
||||
require LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."head.phtml";
|
||||
?>
|
||||
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Prompt IE 6 users to install Chrome Frame. Remove this if you support IE 6.
|
||||
chromium.org/developers/how-tos/chrome-frame-getting-started -->
|
||||
<!--[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]-->
|
||||
|
||||
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."header.phtml"; ?>
|
||||
|
||||
<div class="contents">
|
||||
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."body.phtml"; ?>
|
||||
</div>
|
||||
|
||||
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."footer.phtml"; ?>
|
||||
|
||||
|
||||
<!-- JavaScript at the bottom for fast page loading -->
|
||||
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."bottom-javascript.phtml"; ?>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,21 +0,0 @@
|
|||
<?php
|
||||
namespace MVC\Module\Setup;
|
||||
|
||||
class Syf43 {
|
||||
|
||||
/**
|
||||
* @param none
|
||||
* @return modular_symfony_web
|
||||
*/
|
||||
|
||||
public function load($name) {
|
||||
ob_start();
|
||||
require( MODULES_PATH . DIRECTORY_SEPARATOR . $name . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "index.php" );
|
||||
$modularApp = ob_get_clean();
|
||||
echo $modularApp;
|
||||
}
|
||||
|
||||
public static function twigLoader($name){
|
||||
require MODULES_PATH . DIRECTORY_SEPARATOR . "setup" . DIRECTORY_SEPARATOR . $name . ".twig.class.php";
|
||||
}
|
||||
}
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
"php": "^7.1.3",
|
||||
"windwalker/renderer": "3.*",
|
||||
"illuminate/view": "4.*"
|
||||
"illuminate/view": "4.*",
|
||||
"hybridauth/hybridauth": "~3.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,5 +9,5 @@ define("MODULES_PATH", APPLICATION_PATH.DIRECTORY_SEPARATOR."modules");
|
|||
|
||||
require VENDOR_PATH.DIRECTORY_SEPARATOR."autoload.php";
|
||||
|
||||
$poo_v1 = new \MVC\Classe\Application();
|
||||
$poo_v1->launch();
|
||||
$poo_v5 = new \MVC\Classe\Application();
|
||||
$poo_v5->launch();
|
||||
|
|
Loading…
Reference in a new issue