update : ajout de l'extension twig permettant de recalibrer l'application à la fois avec le moteur de rendu twig et blade, ici l'index peut être soit twig soit blade
This commit is contained in:
parent
f8bcc15874
commit
e55358c819
84
application/class/TwigControlleurAction.php
Normal file
84
application/class/TwigControlleurAction.php
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace MVC\Classe;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class MyActionTwigExtension
|
||||||
|
* with call {{ static_call("AppBundle\Entity\YourEntity", "GetSomething", ["var1", "var2"]) }}
|
||||||
|
* other {{ action("AppBundle\Entity\YourEntity", "GetSomething", ["var1", "var2"]) }}
|
||||||
|
*
|
||||||
|
* @package MVC\Classe
|
||||||
|
*/
|
||||||
|
|
||||||
|
class TwigControlleurAction extends \Twig\Extension\AbstractExtension
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns a list of functions to add to the existing list.
|
||||||
|
*
|
||||||
|
* @return \Twig\TwigFunction[]
|
||||||
|
*/
|
||||||
|
public function getFunctions() {
|
||||||
|
return array(
|
||||||
|
new \Twig\TwigFunction("action", array($this, "inserer")),
|
||||||
|
new \Twig\TwigFunction("call", array($this, "getClassMethodStatic")),
|
||||||
|
new \Twig\TwigFunction("session", array($this, "afficheSession")),
|
||||||
|
new \Twig\TwigFunction("server", array($this, "afficheServer"))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function afficheServer($key_var = ''){
|
||||||
|
if($key_var !== ""){
|
||||||
|
if(isset($_SERVER[$key_var])) {
|
||||||
|
return $_SERVER[$key_var];
|
||||||
|
}else{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
return $_SERVER;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function afficheSession($key_var = ''){
|
||||||
|
if($key_var !== ""){
|
||||||
|
if(isset($_SESSION[$key_var])) {
|
||||||
|
return $_SESSION[$key_var];
|
||||||
|
}else{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
return $_SESSION;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function inserer($action, $data = array())
|
||||||
|
{
|
||||||
|
//on extrait la classe d'appel de l'action
|
||||||
|
$action = explode('.', $action);
|
||||||
|
$class = ucfirst($action[0]) . "Action";
|
||||||
|
//TODO: use try ... catch with \MVC\Classe\Logger to log error
|
||||||
|
if (is_file(ACTION_PATH . DIRECTORY_SEPARATOR . $class . ".php")) {
|
||||||
|
require_once ACTION_PATH . DIRECTORY_SEPARATOR . $class . ".php";
|
||||||
|
//On charge la classe Action de façon réflextive
|
||||||
|
$slot = new $class();
|
||||||
|
//si l'action passé en parametre est fournit avec une methode pointée on charge celle demandée sinon on charge celle par defaut
|
||||||
|
if (isset($action[1])) {
|
||||||
|
$method = $action[1];
|
||||||
|
//On appel la méthode de la classe action de manière reflextive
|
||||||
|
return $slot->$method(...$data);
|
||||||
|
} else {
|
||||||
|
return $slot->default(...$data);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/*HandleError*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static function getClassMethodStatic($class, $method, $args = array())
|
||||||
|
{
|
||||||
|
return $class::$method(...$args);
|
||||||
|
}
|
||||||
|
}
|
|
@ -60,6 +60,7 @@ class Vue
|
||||||
switch ($engine){
|
switch ($engine){
|
||||||
case 'twig':
|
case 'twig':
|
||||||
$renderer = new \Windwalker\Renderer\TwigRenderer($paths);
|
$renderer = new \Windwalker\Renderer\TwigRenderer($paths);
|
||||||
|
$renderer->addExtension(new \MVC\Classe\TwigControlleurAction);
|
||||||
$name .= '.html';
|
$name .= '.html';
|
||||||
break;
|
break;
|
||||||
case 'blade':
|
case 'blade':
|
||||||
|
|
|
@ -2,7 +2,7 @@ name : index
|
||||||
page_title : Accueil de l'application
|
page_title : Accueil de l'application
|
||||||
description : zatou stra bracadabla
|
description : zatou stra bracadabla
|
||||||
|
|
||||||
engine : blade
|
engine : twig
|
||||||
authentification : yes
|
authentification : yes
|
||||||
|
|
||||||
ariane : {acceuil}
|
ariane : {acceuil}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
{% extends "system.html.twig" %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<!-- Body Inner -->
|
<!-- Body Inner -->
|
||||||
|
@ -7,11 +8,12 @@
|
||||||
style="background: rgba(0, 0, 0, 0.59);">
|
style="background: rgba(0, 0, 0, 0.59);">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<ul class="top-menu">
|
<ul class="top-menu">
|
||||||
<li {% if name == 'docs_route' || name == 'docs_name_route' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', []) }}">Documentation</a></li>
|
{{call('\\MVC\\Object\\Environment','getTextEnvironment',[]) | raw}}
|
||||||
<li {% if name == 'depots' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'gitlist/SAND-FrameWork', []) }}">Dépot</a></li>
|
<li {% if name == 'docs_route' or name == 'docs_name_route' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'docs', []]) }}">Documentation</a></li>
|
||||||
<li {% if name == 'donate' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Donate', []) }}">Donate</a></li>
|
<li {% if name == 'depots' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'gitlist/SAND-FrameWork', []]) }}">Dépot</a></li>
|
||||||
<li {% if name == 'cgu' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'CGU', []) }}"> CGU Terms</a></li>
|
<li {% if name == 'donate' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Donate', []]) }}">Donate</a></li>
|
||||||
<li {% if name == 'policy' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Policy', []) }}">Policy</a></li>
|
<li {% if name == 'cgu' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'CGU', []]) }}"> CGU Terms</a></li>
|
||||||
|
<li {% if name == 'policy' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Policy', []]) }}">Policy</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -38,8 +40,8 @@
|
||||||
<!--end: logo-->
|
<!--end: logo-->
|
||||||
<nav>
|
<nav>
|
||||||
<ul>
|
<ul>
|
||||||
<li {% if name == 'index' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Index', []) }}">Index</a></li>
|
<li {% if name == 'index' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[false, 'Index', []]) }}">Index</a></li>
|
||||||
<li {% if name == 'admin' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Admin', []) }}">Admin</a></li>
|
<li {% if name == 'admin' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[false, 'Admin', []]) }}">Admin</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
@ -52,24 +54,43 @@
|
||||||
<!-- Subbar -->
|
<!-- Subbar -->
|
||||||
<div id="subbar" class="fullwidth">
|
<div id="subbar" class="fullwidth">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<span style="float:left;">Vous êtes connecté en tant que {{$_SESSION['user_login']}}</span>
|
<span style="float:left;">Vous êtes connecté en tant que {{session('user_login')}}</span>
|
||||||
<span style="float:right;"><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Logout', []) }}">Se Deconnecter</a></span>
|
<span style="float:right;"><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Logout', []]) }}">Se Deconnecter</a></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- end: Subbar -->
|
<!-- end: Subbar -->
|
||||||
|
<!-- Breadcrumbs -->
|
||||||
|
{%if ariane is defined %}
|
||||||
|
<div id="breadcrumbs" class="fullwidth">
|
||||||
|
<div class="container">
|
||||||
|
<nav aria-label="breadcrumb">
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
{% for value in ariane %}
|
||||||
|
{% if value == ariane|last %}
|
||||||
|
<li class="breadcrumb-item active" aria-current="page">{{value}}</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="breadcrumb-item"><a href="{{call("\\MVC\\Classe\\Url","link_rewrite",[false,arianelink[value.index],[] ])}}">{{value}}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<section id="page-content">
|
<section id="page-content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<!--Alerts-->
|
<!--Alerts-->
|
||||||
{% if $_SESSION['alerts'] is defined %}
|
{% if not session('alerts') == null %}
|
||||||
{% foreach $_SESSION['alerts'] as alert %}
|
{% for alert in session('alerts') %}
|
||||||
<div class="alert alert-{{alert.type}} alert-dismissible fade show" role="alert">
|
<div class="alert alert-{{alert.type}} alert-dismissible fade show" role="alert">
|
||||||
<strong>{{alert.title}}</strong> {{alert.message}}.
|
<strong>{{alert.title}}</strong> {{alert.message}}.
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
{% endforeach %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<!--end: Alerts-->
|
<!--end: Alerts-->
|
||||||
|
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -84,7 +105,7 @@
|
||||||
<div class="widget">
|
<div class="widget">
|
||||||
<div class="widget-title"></div>
|
<div class="widget-title"></div>
|
||||||
<p class="mb-5">
|
<p class="mb-5">
|
||||||
<img src="{{ \MVC\Classe\Url::asset_rewrite('assets/img/1007698-ffeb3b.svg') }}" width="150">
|
<img src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/img/1007698-ffeb3b.svg']) }}" width="150">
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -116,4 +137,4 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- end: Body Inner -->
|
<!-- end: Body Inner -->
|
||||||
{% endblock %}}
|
{% endblock %}
|
||||||
|
|
|
@ -27,29 +27,29 @@
|
||||||
<meta name="msapplication-TileColor" content="#ffffff">
|
<meta name="msapplication-TileColor" content="#ffffff">
|
||||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||||
<meta name="theme-color" content="#ffffff">
|
<meta name="theme-color" content="#ffffff">
|
||||||
{% block top-css %}
|
{% block topCss %}
|
||||||
<link rel="stylesheet" href="{{ \MVC\Classe\Url::asset_rewrite('assets/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css')}}">
|
<link rel="stylesheet" href="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css'])}}">
|
||||||
<link rel="stylesheet" href="{{ \MVC\Classe\Url::asset_rewrite('assets/css/custom.css')}}">
|
<link rel="stylesheet" href="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/css/custom.css'])}}">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
{% block top-javascript %}{% endblock %}
|
{% block topJavascript %}{% endblock %}
|
||||||
|
|
||||||
{% block body %}{% endblock %}
|
{% block body %}{% endblock %}
|
||||||
|
|
||||||
{% block bottom-javascript %}
|
{% block bottomJavascript %}
|
||||||
<script src="{{ \MVC\Classe\Url::asset_rewrite('assets/bootstrap-5.0.0-beta1-dist/js/bootstrap.min.js')}}"></script>
|
<script src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/bootstrap-5.0.0-beta1-dist/js/bootstrap.min.js'])}}"></script>
|
||||||
<script src="{{ \MVC\Classe\Url::asset_rewrite('assets/js/custom.js')}}"></script>
|
<script src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/js/custom.js'])}}"></script>
|
||||||
|
|
||||||
/*
|
{#
|
||||||
SCRIPT JS permettant de ne valider qu'une seule fois un formulaire
|
SCRIPT JS permettant de ne valider qu'une seule fois un formulaire
|
||||||
ATTENTION tous les formulaires sont affecté
|
ATTENTION tous les formulaires sont affecté
|
||||||
Lors d'une validation bootstrap personnalisé veuillez utilisé
|
Lors d'une validation bootstrap personnalisé veuillez utilisé
|
||||||
la class do-resubmit sur le formulaire afin de permettre
|
la class do-resubmit sur le formulaire afin de permettre
|
||||||
l'activation supplémentaire du bouton.
|
l'activation supplémentaire du bouton.
|
||||||
*/
|
#}
|
||||||
<script>
|
<script>
|
||||||
window.onload = function() {
|
window.onload = function() {
|
||||||
let PreventAllforms = document.querySelectorAll("form");
|
let PreventAllforms = document.querySelectorAll("form");
|
|
@ -1 +1,10 @@
|
||||||
INDEX
|
{% extends "body.html.twig" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Accueil de l'url</h1>
|
||||||
|
<h2> {{server('SERVER_NAME')}}</h2>
|
||||||
|
<br /><br /><br />
|
||||||
|
<hr/>
|
||||||
|
{{templating_a}}::{{templating_b}}::{{templating_c}}
|
||||||
|
{{ action('default.default',[4,5,6]) }}
|
||||||
|
{% endblock %}
|
8
application/traitements/add-alert-example.php
Normal file
8
application/traitements/add-alert-example.php
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
\MVC\Object\Session::createAndTestSession();
|
||||||
|
|
||||||
|
\MVC\Object\Alert::addAlert('OK','This is an alert !','info');
|
||||||
|
|
||||||
|
|
||||||
|
header('location:'.\MVC\Classe\Url::link_rewrite(false, "index", []));
|
Loading…
Reference in a new issue