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 %}
|
||||
{% endblock %}
|
||||
{% block body %}
|
||||
<div class="container" style="display:float;">
|
||||
<img src="\images\logo_region.png" style="width:30%;"/>
|
||||
</div>
|
||||
{% if region.name == 'Ile-de-France' %}
|
||||
<script type="text/javascript">
|
||||
$('.fond').css('background-image', "url('/images/ile-de-france.jpg')");
|
||||
</script>
|
||||
{% endif %}
|
||||
<style>
|
||||
.breadcrumb {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.breadcrumbs {
|
||||
grid-area: breadcrumbs;
|
||||
grid-column: 0 / 1;
|
||||
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;">
|
||||
<div class="container" style="display:float;">
|
||||
<div class="label" style="background-color: white;display:inline-block;padding-top:0.3rem;">
|
||||
<h5>Antennes {{ region.name }} :</h5>
|
||||
<!-- 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 active">{{ region.name }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
{% for antenne in antennes %}
|
||||
<a style="color:black;" href="{{ path('product.index', {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>
|
||||
<sidebar class="sidebar">
|
||||
|
||||
</sidebar>
|
||||
<article class="main">
|
||||
<div class="container">
|
||||
<img src="\images\logo_region.png" style="background-color: burlywood;" />
|
||||
</div>
|
||||
{% 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 %}
|
|
@ -2,6 +2,7 @@
|
|||
namespace App\Product\Actions;
|
||||
|
||||
use App\Gmarche\Table\AntenneTable;
|
||||
use App\Gmarche\Table\RegionTable;
|
||||
use App\Product\Table\ProductTable;
|
||||
use Framework\Actions\RouterAwareAction;
|
||||
use Framework\Renderer\RendererInterface;
|
||||
|
@ -25,35 +26,35 @@ class ProductIndexAction
|
|||
public function __construct(
|
||||
RendererInterface $renderer,
|
||||
ProductTable $productTable,
|
||||
AntenneTable $antenneTable
|
||||
AntenneTable $antenneTable,
|
||||
RegionTable $regionTable
|
||||
) {
|
||||
$this->renderer = $renderer;
|
||||
$this->productTable = $productTable;
|
||||
$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)
|
||||
{
|
||||
$params = $request->getQueryParams();
|
||||
$antenne_slug =$request->getAttribute('slug');
|
||||
// $region =$request->getAttribute('region');
|
||||
$region_slug =$request->getAttribute('region');
|
||||
|
||||
$requete = $this->antenneTable->findBy('slug', $antenne_slug);
|
||||
$antenne_name = $requete->name;
|
||||
$antenne_id = $requete->id;
|
||||
|
||||
$requete_region = $this->regionTable->findBy('slug', $region_slug);
|
||||
$region_name = $requete_region->name;
|
||||
$page = $params['p'] ?? 1;
|
||||
//$routePrefix = 'product.admin';
|
||||
$routePrefix = 'product.admin';
|
||||
//$routePrefix = 'product.index';
|
||||
$viewPath = '@product/admin/products';
|
||||
$items = $this->productTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page);
|
||||
|
||||
return $this->renderer->render($viewPath.'/index', compact('antenne_id','antenne_slug','antenne_name','routePrefix','viewPath', 'items' ));
|
||||
//echo "antenne_ici";
|
||||
//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\TwigRenderer;
|
||||
use Framework\Router;
|
||||
use Grpc\Server;
|
||||
use GuzzleHttp\Psr7\ServerRequest;
|
||||
use Psr\Container\ContainerInterface;
|
||||
|
||||
class ProductModule extends Module
|
||||
|
@ -22,15 +24,30 @@ class ProductModule extends Module
|
|||
|
||||
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');
|
||||
$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;
|
||||
padding-right: 2rem;
|
||||
}
|
||||
.breadcrumb {
|
||||
font-size: 1rem;
|
||||
}
|
||||
</style>
|
||||
<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 class="label" style="background-color: white;">
|
||||
<h4>G-Marché de : {{ antenne_name }}</h4>
|
||||
|
@ -176,9 +189,9 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<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], slug: explodeUrl()[3], antenne: explodeUrl()[4]}) -->
|
||||
paginate(items, routePrefix ~ '.index', {id: item.id, region: explodeUrl()[2],
|
||||
slug: explodeUrl()[3], antenne: explodeUrl()[4]}) -->
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -12,63 +12,77 @@
|
|||
body {
|
||||
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>
|
||||
</head>
|
||||
<body class="fond">
|
||||
|
||||
<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="#">Ğ1-Marché</a>
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;"
|
||||
href="{{ path('gmarche.index') }}">Accueil</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;"
|
||||
href="{{ path('contact') }}">Qui sommes-nous ?</a>
|
||||
</li>
|
||||
{% if antenne_name %}
|
||||
<button class="btn-custom">Produits</button>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<div class="navbar-nav">
|
||||
<div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:-3px;">
|
||||
{{ "now"|date('d/m/y') }}
|
||||
</div>
|
||||
{% if current_user() %}
|
||||
<div class="navbar-text"><span><img src="\avatar_user.png" width="22" height="22" /></span>
|
||||
<span id="nom_connecte">{{ current_user().username }}</span></div>
|
||||
|
||||
<form method="post" action="{{ path('auth.logout') }}">
|
||||
<!-- csrf_input() }}-->
|
||||
<button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<div class="nav-item">
|
||||
<a class="nav-link" href="{{ path('auth.login') }}" style="font-size:14px;">Se connecter</a>
|
||||
<body class="fond page">
|
||||
<div class="site">
|
||||
<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="#">Ğ1-Marché</a>
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;"
|
||||
href="{{ path('gmarche.index') }}">Accueil</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;"
|
||||
href="{{ path('contact') }}">Qui sommes-nous ?</a>
|
||||
</li>
|
||||
{% if antenne_name %}
|
||||
<button class="btn-custom">Produits</button>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<div class="navbar-nav">
|
||||
<div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:-3px;">
|
||||
{{ "now"|date('d/m/y') }}
|
||||
</div>
|
||||
{% if current_user() %}
|
||||
<div class="navbar-text"><span><img src="\avatar_user.png" width="22" height="22" /></span>
|
||||
<span id="nom_connecte">{{ current_user().username }}</span></div>
|
||||
|
||||
<form method="post" action="{{ path('auth.logout') }}">
|
||||
<!-- csrf_input() }}-->
|
||||
<button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<div class="nav-item">
|
||||
<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 class="nav-item">
|
||||
<a class="nav-link" href="{{ path('account.signup') }}" style="font-size:14px;">S'inscrire</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</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>-->
|
||||
|
||||
<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>
|
||||
</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>
|
||||
</html>
|
Loading…
Reference in New Issue