Avancement sur Modification d'une antenne - Reglage des selects imbriques

This commit is contained in:
nox 2020-01-27 03:56:05 +01:00
parent b9d7376869
commit 600786d914
4 changed files with 100 additions and 57 deletions

View File

@ -36,6 +36,7 @@ class AdminModule extends Module
$router->post('/profil-user', [LoggedInMiddleware::class, AccountUserEditAction::class]);
$router->get('/antenne/create', [LoggedInMiddleware::class, AntenneCrudAction::class], 'antenne.create');
$router->get('/antenne/edit', [LoggedInMiddleware::class, AntenneEditAction::class], 'antenne.edit');
$router->post('/antenne/edit', [LoggedInMiddleware::class, AntenneEditAction::class]);
if ($renderer instanceof TwigRenderer) {
$renderer->getTwig()->addExtension($adminTwigExtension);
// $renderer->getTwig()->addExtension($variableExtension);

View File

@ -8,6 +8,8 @@ use App\Gmarche\Table\AntenneTable;
use App\Gmarche\Table\RegionTable;
use Framework\Actions\RouterAwareAction;
use Framework\Renderer\RendererInterface;
use Framework\Response\RedirectResponse;
use Framework\Validator;
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ServerRequestInterface as Request;
@ -61,6 +63,27 @@ class AntenneEditAction
//$region = $this->regionTable->findBy('slug', $slug);
$sess = $_SESSION;
if ($request->getMethod() === 'POST') {
//$user = $this->auth->getUser();
$params = $request->getParsedBody();
$antenne_id = $params['antenne'];
echo "antenne_id=/";
var_dump($params);
echo "/";
die();
$validator = (new Validator($params))
->required('antenne', 'region');
if ($validator->isValid()) {
$antenneParams = [
'id' => $params['antenne'],
'region_id' => $params['region']
];
$this->antenneTable->update($antenne_id, $antenneParams);
$this->flashService->success("L'antenne a bien été mise à jour");
return new RedirectResponse($request->getUri()->getPath());
}
$errors = $validator->getErrors();
}
return $this->renderer->render('@antenne/edit', compact('sess','page', 'listeRegions', 'listeAntennes'));
}
}

View File

@ -30,75 +30,95 @@
</script>
<div class="container_main">
<div id="la_page">
<span style="color:white;font-size:1.4rem;">
<span style="color:white;font-size:1.4rem;">
MODIFICATION D'UNE ANTENNE
</span>
<div class="container" style="padding:3rem; width:55rem;border:1px solid blue;margin:auto;">
<div style="width:15rem;color:white;float:left;text-align:left;">
<span style="margin-left:1rem;">ANTENNE</span>
<select id="antenne" class="form-control">
<option class="list-group-item list-group-item-action" value="0">
Sélectionnez l'antenne
</option>
{% for item in listeAntennes %}
<option class="list-group-item list-group-item-action" value="{{ item.regionName }}">
{{ item.antenneName }}
</option>
{% endfor %}
</select>
</div>
<div style="width:14rem;color:white;float:right;text-align:left;">
<span style="margin-left:1rem;">REGION</span>
<select id="region" class="form-control">
<option class="list-group-item list-group-item-action" value="0"></option>
</select>
</div>
<div style="clear:both;">
<form>
<!--{ csrf_input }}-->
<div class="row" style="color:white;">
<div class="col-md-12">
{{ field('contenu', item.content, "Annonce de présentation du G-marché", {type: 'textarea'}) }}
</div>
</div>
<div class="row" style="color:white;">
<div class="col-md-6">
{{ field('datepicker', item.gmarcheAt, "Date prochain G-marché", {class: 'datepicker'}) }}
</div>
<div class="col-md-6">
{{ field('name', item.name, "Nom du produit") }}
</div>
</div>
<button class="btn btn-primary" type="submit">Enregistrer</button>
</form>
</div>
</div>
</span>
<div class="container" style="padding:3rem; width:55rem;border:1px solid blue;margin:auto;">
<!--{ path('antenne.edit', { id: item.id, region: explodeUrl()[2]}) }}-->
<form action="" method="post">
<!--{ csrf_input }}-->
<div class="row" style="color:white;">
<div class="col-md-4" style="max-width: 15rem;">
<span style="margin-left:1rem;">ANTENNE</span>
<select id="antenne_select" name="antenne" class="form-control">
<option class="list-group-item list-group-item-action" value="0">
Sélectionnez l'antenne
</option>
{% for item in listeAntennes %}
<option class="list-group-item list-group-item-action" value="{{ item.id }}">
{{ item.antenneName }}
</option>
{% endfor %}
</select>
</div>
{% set j=0 %}
{% for item in listeAntennes %}
{% set j=j+1 %}
{% set name = 'region_name'~j %}
<span style="width:0;height:0;">{{ field(name,item.regionName,"", {type:'hidden'}) }}</span>
{% endfor %}
<div class="col-md-4" style="min-width:15rem;">
<div style="float:left; text-align:left;margin-left:2rem;margin-bottom: 1rem;">
<span style="margin-left:1rem;">REGION</span>
<select id="region" name="region" class="form-control">
<option class="list-group-item list-group-item-action" value="0"></option>
</select>
</div>
</div>
<div class="col-md-3">
<div style="margin-top:-0.4rem;float:left;" style="min-width: 13rem;">
{{ field('datepicker', item.gmarcheAt, "Prochain G-marché", {class: 'datepicker'}) }}
</div>
</div>
</div>
<div style="clear:both;">
<div class="row" style="color:white;">
<div class="col-md-12" style="margin-top:1rem;height:14rem;border:1px solid white;">
<!--{ field('contenu', item.content, "Annonce de présentation de l'antenne", {type: 'textarea'},'',[rows]) }}-->
<div class="form-group">
<label for="comment">Annonce de présentation de l'antenne</label>
<textarea class="form-control" rows="7" id="contenu"></textarea>
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Enregistrer</button>
</div>
</form>
</div>
</div>
</div>
<script>
document.querySelector("#antenne").addEventListener("change", function() {
document.querySelector("#antenne_select").addEventListener("change", function() {
/* On vide si besoin la zone select */
if (document.getElementById("region").hasChildNodes()) {
var child = document.getElementById("region");
while (child.hasChildNodes()) {
child.removeChild(child.firstChild);
}
}
var x = document.querySelector("#antenne").selectedIndex,
y = document.querySelector("#antenne").options,
select = document.getElementById('region');
if (document.querySelector("#antenne").options[0].text=="Sélectionnez l'antenne") {
document.querySelector("#antenne").removeChild( document.querySelector("#antenne").firstChild);
}
/* if (document.querySelector("#antenne_select").options[0].text=="Sélectionnez l'antenne") {
// document.querySelector("#antenne_select").removeChild( document.querySelector("#antenne_select").firstChild);
// var diff = 1;
} else {
// var diff = 0;
}*/
var x = document.querySelector("#antenne_select").selectedIndex,
y = document.querySelector("#antenne_select").options,
select = document.getElementById('region'),
nom_zone = "region_name"+x,
region_nom = document.getElementById(nom_zone).value;
/* On supprime la valeur en double avec cleanArray */
var min = 0,
tableau = cleanArray(new Array(y[x].value, "Auvergne-Rhône-Alpes", "Bourgogne-Franche-Comté", "Bretagne",
var tableau = new Array("Auvergne-Rhône-Alpes", "Bourgogne-Franche-Comté", "Bretagne",
"Centre-Val de Loire", "Corse", "Grand Est", "Hauts-de-France", "Ile-de-France", "Normandie",
"Nouvelle-Aquitaine", "Occitanie", "Pays de la Loire", "Provence-Alpes-Côte d'Azur"));
for (var i = min; i<tableau.length; i++){
"Nouvelle-Aquitaine", "Occitanie", "Pays de la Loire", "Provence-Alpes-Côte d'Azur");
for (var i = 0; i<tableau.length; i++){
opt = document.createElement('option')
opt.value = tableau[i]
opt.innerHTML = tableau[i]
if (i == min) {
if (region_nom == tableau[i]) {
opt.selected = "selected"
}
select.appendChild(opt)
@ -107,9 +127,8 @@
</script>
<script>
document.getElementById("region").addEventListener("click", function() {
<!-- % for item2 in listeRegions %}-->
$(document).ready(function () {
//
});
});
</script>

View File

@ -26,7 +26,7 @@ class AntenneTable extends Table
$region = new RegionTable($this->pdo);
return $this->makeQuery()
->join($region->getTable() . ' as r', 'a.region_id = r.id')
->select('a.id, r.name as regionName, a.name as antenneName, r.slug as regionSlug, a.slug as antenneSlug')
->select('a.id, a.region_id, r.name as regionName, a.name as antenneName, r.slug as regionSlug, a.slug as antenneSlug')
->order('r.name, a.name ASC');
}
}