Ajout du fil d'Ariane alias breadcrumbs

This commit is contained in:
nox 2019-10-24 01:15:07 +02:00
parent 59450c34ef
commit 93a2d0bdc4
5 changed files with 186 additions and 100 deletions

View File

@ -4,8 +4,45 @@
Ğ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 {
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>
<!-- 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>
<sidebar class="sidebar">
</sidebar>
<article class="main">
<div class="container">
<img src="\images\logo_region.png" style="background-color: burlywood;" />
</div> </div>
{% if region.name == 'Ile-de-France' %} {% if region.name == 'Ile-de-France' %}
<script type="text/javascript"> <script type="text/javascript">
@ -15,14 +52,14 @@
<div class="row card" style="width: 17rem;margin-left: 1rem;"> <div class="row card" style="width: 17rem;margin-left: 1rem;">
<div class="container" style="display:float;"> <div class="container">
<div class="label" style="background-color: white;display:inline-block;padding-top:0.3rem;"> <div class="label" style="background-color: white;display:inline-block;padding-top:0.3rem;">
<h5>Antennes {{ region.name }} :</h5> <h5>Antennes {{ region.name }} :</h5>
</div> </div>
</div> </div>
<ul class="list-group list-group-flush"> <ul class="list-group list-group-flush">
{% for antenne in antennes %} {% for antenne in antennes %}
<a style="color:black;" href="{{ path('product.index', {region: region.slug, slug: antenne.slug, antenne: antenne.id} ) }}" title="{{ antenne.name }}"> <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;"> <li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
{{ antenne.name }} {{ antenne.name }}
</li> </li>
@ -31,7 +68,11 @@
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
{% if antennes %} <footer class="footer">
{{ paginate(antennes, 'gmarche.antenne', {slug: slug}) }} <!-- if antennes
{% endif %} paginate(antennes, 'gmarche.antenne', {slug: slug})
endif -->
</footer>
</article>
{% endblock %} {% endblock %}

View File

@ -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' ));
} }
} }

View File

@ -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');

View File

@ -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 %}

View File

@ -12,18 +12,31 @@
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>
@ -53,9 +66,9 @@
</div> </div>
{% endif %} {% endif %}
</div> </div>
</nav> </nav>
<div class="container"> <!-- <div class="container">-->
{% if flash('success') %} {% if flash('success') %}
<div class="alert alert-success"> <div class="alert alert-success">
{{ flash('success') }} {{ flash('success') }}
@ -63,12 +76,13 @@
{% endif %} {% endif %}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
{% block body %}{% endblock %} {% block body %}{% endblock %}
</div><!-- /.container --> <!--</div>-->
<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>
<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>
</body> </body>
</html> </html>