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){
|
||||
case 'twig':
|
||||
$renderer = new \Windwalker\Renderer\TwigRenderer($paths);
|
||||
$renderer->addExtension(new \MVC\Classe\TwigControlleurAction);
|
||||
$name .= '.html';
|
||||
break;
|
||||
case 'blade':
|
||||
|
|
|
@ -2,7 +2,7 @@ name : index
|
|||
page_title : Accueil de l'application
|
||||
description : zatou stra bracadabla
|
||||
|
||||
engine : blade
|
||||
engine : twig
|
||||
authentification : yes
|
||||
|
||||
ariane : {acceuil}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
{% extends "system.html.twig" %}
|
||||
|
||||
{% block body %}
|
||||
<!-- Body Inner -->
|
||||
|
@ -7,11 +8,12 @@
|
|||
style="background: rgba(0, 0, 0, 0.59);">
|
||||
<div class="container">
|
||||
<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>
|
||||
<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 == 'donate' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Donate', []) }}">Donate</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 == 'policy' %} class="actual" {% endif %} ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Policy', []) }}">Policy</a></li>
|
||||
{{call('\\MVC\\Object\\Environment','getTextEnvironment',[]) | raw}}
|
||||
<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 == 'depots' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'gitlist/SAND-FrameWork', []]) }}">Dépot</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 == '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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -38,8 +40,8 @@
|
|||
<!--end: logo-->
|
||||
<nav>
|
||||
<ul>
|
||||
<li {% if name == 'index' %} class="actual" {% endif %} ><a href="{{ \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 == '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="{{ call("\\MVC\\Classe\\Url","link_rewrite",[false, 'Admin', []]) }}">Admin</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -52,24 +54,43 @@
|
|||
<!-- Subbar -->
|
||||
<div id="subbar" class="fullwidth">
|
||||
<div class="container">
|
||||
<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:left;">Vous êtes connecté en tant que {{session('user_login')}}</span>
|
||||
<span style="float:right;"><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Logout', []]) }}">Se Deconnecter</a></span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 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">
|
||||
<div class="container">
|
||||
|
||||
<!--Alerts-->
|
||||
{% if $_SESSION['alerts'] is defined %}
|
||||
{% foreach $_SESSION['alerts'] as alert %}
|
||||
{% if not session('alerts') == null %}
|
||||
{% for alert in session('alerts') %}
|
||||
<div class="alert alert-{{alert.type}} alert-dismissible fade show" role="alert">
|
||||
<strong>{{alert.title}}</strong> {{alert.message}}.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
{% endforeach %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<!--end: Alerts-->
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
|
||||
</div>
|
||||
|
@ -84,7 +105,7 @@
|
|||
<div class="widget">
|
||||
<div class="widget-title"></div>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -116,4 +137,4 @@
|
|||
|
||||
</div>
|
||||
<!-- end: Body Inner -->
|
||||
{% endblock %}}
|
||||
{% endblock %}
|
||||
|
|
|
@ -27,29 +27,29 @@
|
|||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
{% block top-css %}
|
||||
<link rel="stylesheet" href="{{ \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')}}">
|
||||
{% block topCss %}
|
||||
<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="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/css/custom.css'])}}">
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{% block top-javascript %}{% endblock %}
|
||||
{% block topJavascript %}{% endblock %}
|
||||
|
||||
{% block body %}{% endblock %}
|
||||
|
||||
{% block bottom-javascript %}
|
||||
<script src="{{ \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>
|
||||
{% block bottomJavascript %}
|
||||
<script src="{{ call("\\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/js/custom.js'])}}"></script>
|
||||
|
||||
/*
|
||||
{#
|
||||
SCRIPT JS permettant de ne valider qu'une seule fois un formulaire
|
||||
ATTENTION tous les formulaires sont affecté
|
||||
Lors d'une validation bootstrap personnalisé veuillez utilisé
|
||||
la class do-resubmit sur le formulaire afin de permettre
|
||||
l'activation supplémentaire du bouton.
|
||||
*/
|
||||
#}
|
||||
<script>
|
||||
window.onload = function() {
|
||||
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