Ajout du fil d'Ariane alias breadcrumbs
This commit is contained in:
parent
59450c34ef
commit
93a2d0bdc4
|
@ -4,34 +4,75 @@
|
||||||
Ğ1-Marché - {{ region.name }} {% if page > 1 %} - Page {{ page }}{% endif %}
|
Ğ1-Marché - {{ region.name }} {% if page > 1 %} - Page {{ page }}{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="container" style="display:float;">
|
<style>
|
||||||
<img src="\images\logo_region.png" style="width:30%;"/>
|
.breadcrumb {
|
||||||
</div>
|
font-size: 1rem;
|
||||||
{% if region.name == 'Ile-de-France' %}
|
}
|
||||||
<script type="text/javascript">
|
.breadcrumbs {
|
||||||
$('.fond').css('background-image', "url('/images/ile-de-france.jpg')");
|
grid-area: breadcrumbs;
|
||||||
</script>
|
grid-column: 0 / 1;
|
||||||
{% endif %}
|
justify-items: left;
|
||||||
|
}
|
||||||
|
.main {
|
||||||
|
grid-area: main;
|
||||||
|
/*justify-self: start;
|
||||||
|
align-self: start;*/
|
||||||
|
grid-column: 1 / 2;
|
||||||
|
}
|
||||||
|
.sidebar {
|
||||||
|
grid-area: sidebar;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
grid-area: footer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<div class="row card" style="width: 17rem;margin-left: 1rem;">
|
<!-- Fil d'Ariane -->
|
||||||
<div class="container" style="display:float;">
|
<div class="breadcrumbs" >
|
||||||
<div class="label" style="background-color: white;display:inline-block;padding-top:0.3rem;">
|
<nav aria-label="breadcrumb">
|
||||||
<h5>Antennes {{ region.name }} :</h5>
|
<ol class="breadcrumb">
|
||||||
|
<li class="breadcrumb-item"><a href="/gmarche">Accueil</a></li>
|
||||||
|
<li class="breadcrumb-item active">{{ region.name }}</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<sidebar class="sidebar">
|
||||||
<ul class="list-group list-group-flush">
|
|
||||||
{% for antenne in antennes %}
|
</sidebar>
|
||||||
<a style="color:black;" href="{{ path('product.index', {region: region.slug, slug: antenne.slug, antenne: antenne.id} ) }}" title="{{ antenne.name }}">
|
<article class="main">
|
||||||
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
|
<div class="container">
|
||||||
{{ antenne.name }}
|
<img src="\images\logo_region.png" style="background-color: burlywood;" />
|
||||||
</li>
|
</div>
|
||||||
</a>
|
{% if region.name == 'Ile-de-France' %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('.fond').css('background-image', "url('/images/ile-de-france.jpg')");
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row card" style="width: 17rem;margin-left: 1rem;">
|
||||||
|
<div class="container">
|
||||||
|
<div class="label" style="background-color: white;display:inline-block;padding-top:0.3rem;">
|
||||||
|
<h5>Antennes {{ region.name }} :</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul class="list-group list-group-flush">
|
||||||
|
{% for antenne in antennes %}
|
||||||
|
<a style="color:black;" href="{{ path('product.ville', {region: region.slug, slug:antenne.slug, antenne:antenne.id} ) }}" title="{{ antenne.name }}">
|
||||||
|
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
|
||||||
|
{{ antenne.name }}
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<footer class="footer">
|
||||||
|
<!-- if antennes
|
||||||
|
paginate(antennes, 'gmarche.antenne', {slug: slug})
|
||||||
|
endif -->
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{% if antennes %}
|
|
||||||
{{ paginate(antennes, 'gmarche.antenne', {slug: slug}) }}
|
|
||||||
{% endif %}
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -2,6 +2,7 @@
|
||||||
namespace App\Product\Actions;
|
namespace App\Product\Actions;
|
||||||
|
|
||||||
use App\Gmarche\Table\AntenneTable;
|
use App\Gmarche\Table\AntenneTable;
|
||||||
|
use App\Gmarche\Table\RegionTable;
|
||||||
use App\Product\Table\ProductTable;
|
use App\Product\Table\ProductTable;
|
||||||
use Framework\Actions\RouterAwareAction;
|
use Framework\Actions\RouterAwareAction;
|
||||||
use Framework\Renderer\RendererInterface;
|
use Framework\Renderer\RendererInterface;
|
||||||
|
@ -25,35 +26,35 @@ class ProductIndexAction
|
||||||
public function __construct(
|
public function __construct(
|
||||||
RendererInterface $renderer,
|
RendererInterface $renderer,
|
||||||
ProductTable $productTable,
|
ProductTable $productTable,
|
||||||
AntenneTable $antenneTable
|
AntenneTable $antenneTable,
|
||||||
|
RegionTable $regionTable
|
||||||
) {
|
) {
|
||||||
$this->renderer = $renderer;
|
$this->renderer = $renderer;
|
||||||
$this->productTable = $productTable;
|
$this->productTable = $productTable;
|
||||||
$this->antenneTable = $antenneTable;
|
$this->antenneTable = $antenneTable;
|
||||||
|
$this->regionTable = $regionTable;
|
||||||
|
|
||||||
}
|
}
|
||||||
/*public function findAllUsers(): Query
|
|
||||||
{
|
|
||||||
return $this->userTable->makeQuery()
|
|
||||||
->select('*')
|
|
||||||
->where('id=1')
|
|
||||||
->order('username ASC');
|
|
||||||
}*/
|
|
||||||
public function __invoke(Request $request)
|
public function __invoke(Request $request)
|
||||||
{
|
{
|
||||||
$params = $request->getQueryParams();
|
$params = $request->getQueryParams();
|
||||||
$antenne_slug =$request->getAttribute('slug');
|
$antenne_slug =$request->getAttribute('slug');
|
||||||
// $region =$request->getAttribute('region');
|
$region_slug =$request->getAttribute('region');
|
||||||
|
|
||||||
$requete = $this->antenneTable->findBy('slug', $antenne_slug);
|
$requete = $this->antenneTable->findBy('slug', $antenne_slug);
|
||||||
$antenne_name = $requete->name;
|
$antenne_name = $requete->name;
|
||||||
$antenne_id = $requete->id;
|
$antenne_id = $requete->id;
|
||||||
|
$requete_region = $this->regionTable->findBy('slug', $region_slug);
|
||||||
|
$region_name = $requete_region->name;
|
||||||
$page = $params['p'] ?? 1;
|
$page = $params['p'] ?? 1;
|
||||||
//$routePrefix = 'product.admin';
|
//$routePrefix = 'product.admin';
|
||||||
$routePrefix = 'product.admin';
|
//$routePrefix = 'product.index';
|
||||||
$viewPath = '@product/admin/products';
|
$viewPath = '@product/admin/products';
|
||||||
$items = $this->productTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page);
|
$items = $this->productTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page);
|
||||||
|
//echo "antenne_ici";
|
||||||
return $this->renderer->render($viewPath.'/index', compact('antenne_id','antenne_slug','antenne_name','routePrefix','viewPath', 'items' ));
|
//var_dump($items);
|
||||||
|
//die();
|
||||||
|
return $this->renderer->render($viewPath.'/index', compact('antenne_slug','region_name','region_slug','antenne_id','antenne_name','viewPath', 'items' ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,8 @@ use Framework\Module;
|
||||||
use Framework\Renderer\RendererInterface;
|
use Framework\Renderer\RendererInterface;
|
||||||
use Framework\Renderer\TwigRenderer;
|
use Framework\Renderer\TwigRenderer;
|
||||||
use Framework\Router;
|
use Framework\Router;
|
||||||
|
use Grpc\Server;
|
||||||
|
use GuzzleHttp\Psr7\ServerRequest;
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
|
|
||||||
class ProductModule extends Module
|
class ProductModule extends Module
|
||||||
|
@ -22,15 +24,30 @@ class ProductModule extends Module
|
||||||
|
|
||||||
public function __construct(ContainerInterface $container)
|
public function __construct(ContainerInterface $container)
|
||||||
{
|
{
|
||||||
$productPrefix = $container->get('product.prefix');
|
$gmarchePrefix = $container->get('gmarche.prefix');
|
||||||
$gmarchePrefix = $container->get('gmarche.prefix');
|
|
||||||
|
|
||||||
$container->get(RendererInterface::class)->addPath('product', __DIR__ . '/views');
|
$container->get(RendererInterface::class)->addPath('product', __DIR__ . '/views');
|
||||||
$router = $container->get(Router::class);
|
$router = $container->get(Router::class);
|
||||||
|
//$router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{antenne:[a-z\-0-9]+}", ProductIndexAction::class, 'product.index');
|
||||||
|
//$router->get("$gmarchePrefix/{region:[a-z\-]+}/{slug:[a-z\-]+}", ProductIndexAction::class, 'product.ville');
|
||||||
|
$router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}", ProductIndexAction::class, 'product.ville');
|
||||||
|
|
||||||
$router->get("/gmarche/{region:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}", ProductIndexAction::class, 'product.index');
|
// $router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{antenne:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}", ProductIndexAction::class, 'product.admin');
|
||||||
|
//$router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/fuck/{antenne:[a-z\-0-9]+}", ProductIndexAction::class, 'product.index');
|
||||||
|
|
||||||
$router->crud("/gmarche/{region:[a-z\-]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}",[LoggedInMiddleware::class, ProductCrudAction::class],'product.admin');
|
// $route = $router->match(new ServerRequest('GET','/gmarche/ile-de-france/paris/1'));
|
||||||
|
//$this->assertEquals(null, $route);
|
||||||
|
//echo 'var dump route';
|
||||||
|
//var_dump($route);
|
||||||
|
//die();
|
||||||
|
|
||||||
|
// $router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}", ProductIndexAction::class, 'product.index');
|
||||||
|
//$router->get("$gmarchePrefix/ile-de-france/paris", ProductIndexAction::class, 'product.index');
|
||||||
|
//echo "<br />var_dump";
|
||||||
|
//var_dump($router);
|
||||||
|
//die();
|
||||||
|
// $router->crud("$gmarchePrefix/{region:[a-z\-]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}",[LoggedInMiddleware::class, ProductCrudAction::class],'product.admin');
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// $router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}", ProductIndexAction::class, 'product.index');
|
||||||
|
|
|
@ -34,8 +34,21 @@
|
||||||
text-align: right;
|
text-align: right;
|
||||||
padding-right: 2rem;
|
padding-right: 2rem;
|
||||||
}
|
}
|
||||||
|
.breadcrumb {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript" src="/js/script.js"></script>
|
<script type="text/javascript" src="/js/script.js"></script>
|
||||||
|
<!-- Fil d'Ariane -->
|
||||||
|
<div class="breadcrumbs" >
|
||||||
|
<nav aria-label="breadcrumb">
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li class="breadcrumb-item"><a href="/gmarche">Accueil</a></li>
|
||||||
|
<li class="breadcrumb-item"><a href="/gmarche/{{ region_slug }}">{{ region_name }}</a></li>
|
||||||
|
<li class="breadcrumb-item active">{{ antenne_name }}</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
<div id="la_page">
|
<div id="la_page">
|
||||||
<div class="label" style="background-color: white;">
|
<div class="label" style="background-color: white;">
|
||||||
<h4>G-Marché de : {{ antenne_name }}</h4>
|
<h4>G-Marché de : {{ antenne_name }}</h4>
|
||||||
|
@ -176,9 +189,9 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<!--crochet% set token_input = csrf_input %crochet-->
|
crochet% set token_input = csrf_input %crochet
|
||||||
|
|
||||||
|
paginate(items, routePrefix ~ '.index', {id: item.id, region: explodeUrl()[2],
|
||||||
<!-- paginate(items, routePrefix ~ '.index', {id: item.id, region: explodeUrl()[2], slug: explodeUrl()[3], antenne: explodeUrl()[4]}) -->
|
slug: explodeUrl()[3], antenne: explodeUrl()[4]}) -->
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -12,63 +12,77 @@
|
||||||
body {
|
body {
|
||||||
padding-top: 5rem;
|
padding-top: 5rem;
|
||||||
}
|
}
|
||||||
|
.page {
|
||||||
|
display: grid;
|
||||||
|
grid-template-rows:60px 50px 1fr 80px;
|
||||||
|
grid-template-columns: 1fr 1fr 1fr;
|
||||||
|
grid-template-areas:
|
||||||
|
"site site site"
|
||||||
|
"header header header"
|
||||||
|
"breadcrumbs breadcrumbs breadcrumbs"
|
||||||
|
"sidebar main main"
|
||||||
|
"footer footer footer";
|
||||||
|
}
|
||||||
|
.site {
|
||||||
|
grid-column: 2 / 3;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body class="fond">
|
<body class="fond page">
|
||||||
|
<div class="site">
|
||||||
<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
|
<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
|
||||||
<a class="navbar-brand" href="#">Ğ1-Marché</a>
|
<a class="navbar-brand" href="#">Ğ1-Marché</a>
|
||||||
<ul class="navbar-nav mr-auto">
|
<ul class="navbar-nav mr-auto">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;"
|
<a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;"
|
||||||
href="{{ path('gmarche.index') }}">Accueil</a>
|
href="{{ path('gmarche.index') }}">Accueil</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
<li class="nav-item">
|
<a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;"
|
||||||
<a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;"
|
href="{{ path('contact') }}">Qui sommes-nous ?</a>
|
||||||
href="{{ path('contact') }}">Qui sommes-nous ?</a>
|
</li>
|
||||||
</li>
|
{% if antenne_name %}
|
||||||
{% if antenne_name %}
|
<button class="btn-custom">Produits</button>
|
||||||
<button class="btn-custom">Produits</button>
|
{% endif %}
|
||||||
{% endif %}
|
</ul>
|
||||||
</ul>
|
<div class="navbar-nav">
|
||||||
<div class="navbar-nav">
|
<div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:-3px;">
|
||||||
<div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:-3px;">
|
{{ "now"|date('d/m/y') }}
|
||||||
{{ "now"|date('d/m/y') }}
|
</div>
|
||||||
</div>
|
{% if current_user() %}
|
||||||
{% if current_user() %}
|
<div class="navbar-text"><span><img src="\avatar_user.png" width="22" height="22" /></span>
|
||||||
<div class="navbar-text"><span><img src="\avatar_user.png" width="22" height="22" /></span>
|
<span id="nom_connecte">{{ current_user().username }}</span></div>
|
||||||
<span id="nom_connecte">{{ current_user().username }}</span></div>
|
|
||||||
|
<form method="post" action="{{ path('auth.logout') }}">
|
||||||
<form method="post" action="{{ path('auth.logout') }}">
|
<!-- csrf_input() }}-->
|
||||||
<!-- csrf_input() }}-->
|
<button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button>
|
||||||
<button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button>
|
</form>
|
||||||
</form>
|
{% else %}
|
||||||
{% else %}
|
<div class="nav-item">
|
||||||
<div class="nav-item">
|
<a class="nav-link" href="{{ path('auth.login') }}" style="font-size:14px;">Se connecter</a>
|
||||||
<a class="nav-link" href="{{ path('auth.login') }}" style="font-size:14px;">Se connecter</a>
|
</div>
|
||||||
|
<div class="nav-item">
|
||||||
|
<a class="nav-link" href="{{ path('account.signup') }}" style="font-size:14px;">S'inscrire</a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-item">
|
</nav>
|
||||||
<a class="nav-link" href="{{ path('account.signup') }}" style="font-size:14px;">S'inscrire</a>
|
|
||||||
</div>
|
<!-- <div class="container">-->
|
||||||
{% endif %}
|
{% if flash('success') %}
|
||||||
|
<div class="alert alert-success">
|
||||||
|
{{ flash('success') }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
|
||||||
|
|
||||||
|
{% block body %}{% endblock %}
|
||||||
|
|
||||||
|
<!--</div>-->
|
||||||
|
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"></script>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
{% if flash('success') %}
|
|
||||||
<div class="alert alert-success">
|
|
||||||
{{ flash('success') }}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
|
|
||||||
{% block body %}{% endblock %}
|
|
||||||
|
|
||||||
</div><!-- /.container -->
|
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
|
|
||||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
Reference in New Issue