Skip to content
Snippets Groups Projects
Commit fdd68ccb authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Merge branch 'Modulateurs-Statuts' into 'Calendaire'

Modulateurs statuts

See merge request !10
parents 71781d07 f360bbf2
No related branches found
No related tags found
1 merge request!10Modulateurs statuts
Showing
with 851 additions and 16 deletions
$this->add([
'name' => 'champtiret',
'options' => [
'label' => "champphrase",
],
'type' => 'Text',
]);
$this->add([
'name' => 'champtiret',
'options' => [
'label' => 'champphrase',
],
'attributes' => [
'class' => 'selectpicker',
'data-live-search' => 'true',
],
'type' => 'Select',
]);
$this->get('champtiret')
->setEmptyOption("(Aucun)")
->setValueOptions(\UnicaenApp\Util::collectionAsOptions($this->getServicechampmaj()->getList()));
<?php
namespace Application;
use Application\Provider\Privilege\Privileges;
use UnicaenAuth\Guard\PrivilegeController;
return [
'router' => [
'routes' => [
'nomtiret' => [
'type' => 'Literal',
'options' => [
'route' => '/nomtiret',
'defaults' => [
'controller' => 'Application\Controller\nommaj',
'action' => 'index',
],
],
'may_terminate' => true,
'child_routes' => [
'delete' => [
'type' => 'Segment',
'options' => [
'route' => '/delete/:nomtiret',
'constraints' => [
'nomtiret' => '[0-9]*',
],
'defaults' => [
'action' => 'delete',
],
],
],
'saisie' => [
'type' => 'Segment',
'options' => [
'route' => '/saisie/[:nomtiret]',
'constraints' => [
'nomtiret' => '[0-9]*',
],
'defaults' => [
'action' => 'saisie',
],
],
],
],
],
],
],
'navigation' => [
'default' => [
'home' => [
'pages' => [
'administration' => [
'pages' => [
'nomtiret' => [
'label' => 'nommaj',
'icon' => 'fa fa-graduation-cap',
'route' => 'nomtiret',
'resource' => PrivilegeController::getResourceId('Application\Controller\nommaj', 'index'),
'order' => 80,
'border-color' => '#BBCF55',
],
],
],
],
],
],
],
'bjyauthorize' => [
'guards' => [
PrivilegeController::class => [
[
'controller' => 'Application\Controller\nommaj',
'action' => ['index'],
'privileges' => Privileges::droitvisualisation,
],
[
'controller' => 'Application\Controller\nommaj',
'action' => ['saisie','delete'],
'privileges' => Privileges::droitedition,
],
],
],
],
'controllers' => [
'invokables' => [
'Application\Controller\nommaj' => Controller\nommajController::class,
],
],
'service_manager' => [
'invokables' => [
Service\nommajService::class => Service\nommajService::class,
],
],
'view_helpers' => [
],
'form_elements' => [
'invokables' => [
Form\nommaj\Saisie::class => Form\nommaj\Saisie::class,
],
],
];
<?php
namespace Application\Controller;
use Application\Entity\Db\nommaj;
use Application\Service\Traits\nommajServiceAwareTrait;
use Application\Exception\DbException;
use Application\Form\nommaj\Traits\nommajSaisieFormAwareTrait;
use UnicaenApp\View\Model\MessengerViewModel;
class nommajController extends AbstractController
{
use nommajServiceAwareTrait;
use nommajSaisieFormAwareTrait;
public function indexAction()
{
$this->em()->getFilters()->enable('historique')->init([
nommaj::class,
]);
$nomms = $this->getServicenommaj()->getList();
return compact('nomms');
}
public function saisieAction()
{
/* @var $nomm nommaj */
$nomm = $this->getEvent()->getParam('nomtiret');
$form = $this->getFormnommajSaisie();
if (empty($nomm)) {
$title = 'Création d\'une nouvelle nommaj';
$nomm = $this->getServicenommaj()->newEntity();
} else {
$title = 'Édition d\'une nommaj';
}
$form->bindRequestSave($nomm, $this->getRequest(), function (nommaj $fr) {
try {
$this->getServicenommaj()->save($fr);
$this->flashMessenger()->addSuccessMessage('Enregistrement effectué');
} catch (\Exception $e) {
$e = DbException::translate($e);
$this->flashMessenger()->addErrorMessage($e->getMessage() . ':' . $fr->getId());
}
});
return compact('form', 'title');
}
public function deleteAction()
{
$nomm = $this->getEvent()->getParam('nomtiret');
try {
$this->getServicenommaj()->delete($nomm);
$this->flashMessenger()->addSuccessMessage("nommaj supprimée avec succès.");
} catch (\Exception $e) {
$this->flashMessenger()->addErrorMessage(DbException::translate($e)->getMessage());
}
return new MessengerViewModel(compact('nomm'));
}
}
<?php
/**
* @var $this \Application\View\Renderer\PhpRenderer
* @var $nomms \Application\Entity\Db\nommaj[]
*/
use Application\Provider\Privilege\Privileges;
$this->headTitle()->append("nomsouss");
$canEdit = $this->isAllowed(Privileges::getResourceId(Privileges::droitedition));
?>
<h1 class="page-header">nomsouss</h1>
<table class="table table-bordered table-sort">
<thead>
<?php if ($canEdit) echo '<th>Actions</th>' ?>
</thead>
<tbody>
<?php foreach ($nomms as $fr): ?>
<tr>
<?php if ($canEdit) { ?>
<td style="text-align:center;width:1px;white-space: nowrap">
<a class="ajax-modal" data-event="nomtiret-saisie"
href="<?= $this->url('nomtiret/saisie', ['nomtiret' => $fr->getId()]) ?>"
title="Modifier la nommaj">
<span class="glyphicon glyphicon-edit"></span></a>
<a class="pop-ajax"
href="<?= $this->url('nomtiret/delete', ['nomtiret' => $fr->getId()]) ?>"
title="Supprimer la nommaj"
data-content="<p class='lead text-danger'><strong>Attention!</strong> Confirmez-vous cette suppression ?</p>"
data-confirm="true"
data-confirm-button="Oui"
data-cancel-button="Non"
data-submit-reload="true"
>
<span class="glyphicon glyphicon-remove"></span>
</a>
</td>
<?php } ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php if ($canEdit): ?>
<a class="btn btn-primary ajax-modal" data-event="nomtiret-saisie"
href="<?= $this->url('nomtiret/saisie') ?>"
title="Ajouter une nomsous">
<span class="glyphicon glyphicon-edit"></span>
Ajouter une nomsous</a>
<script type="text/javascript">
$(function () {
$("body").on("nomtiret-saisie", function (event, data) {
window.location.reload();
});
});
</script>
<?php endif ?>
<?php
namespace Application\Form\nommaj\Traits;
use Application\Form\nommaj\nommajSaisieForm;
/**
* Description of nommajSaisieFormAwareTrait
*
* @author UnicaenCode
*/
trait nommajSaisieFormAwareTrait
{
/**
* @var nommajSaisieForm
*/
private $formnommajSaisie;
/**
* @param nommajSaisieForm $formnommajSaisie
*
* @return self
*/
public function setFormnommajSaisie(nommajSaisieForm $formnommajSaisie)
{
$this->formnommajSaisie = $formnommajSaisie;
return $this;
}
/**
* Retourne un nouveau formulaire ou fieldset systématiquement, sauf si ce dernier a été fourni manuellement.
*
* @return nommajSaisieForm
*/
public function getFormnommajSaisie()
{
if (!empty($this->formnommajSaisie)) {
return $this->formnommajSaisie;
}
return \Application::$container->get('FormElementManager')->get(nommajSaisieForm::class);
}
}
<?php
/**
* @var $this \Application\View\Renderer\PhpRenderer
* @var $form \Application\Form\nommaj\nommajSaisieForm
*/
echo $this->messenger()->addCurrentMessagesFromFlashMessenger();
echo $this->form($form);
<?php
namespace Application\Service\Traits;
use Application\Service\nommajService;
/**
* Description of nommajAwareTrait
*
* @author UnicaenCode
*/
trait nommajServiceAwareTrait
{
/**
* @var nommajService
*/
private $servicenommaj;
/**
* @param nommajService $servicenommaj
*
* @return self
*/
public function setServicenommaj(nommajService $servicenommaj)
{
$this->servicenommaj = $servicenommaj;
return $this;
}
/**
* @return nommajService
*/
public function getServicenommaj()
{
if (empty($this->servicenommaj)) {
$this->servicenommaj = \Application::$container->get(nommajService::class);
}
return $this->servicenommaj;
}
}
<?php
namespace Application\Service;
use Doctrine\ORM\QueryBuilder;
/**
* Description of nommaj
*
*/
class nommajService extends AbstractEntityService
{
/**
* retourne la classe des entit?s
*
* @return string
* @throws RuntimeException
*/
public function getEntityClass()
{
return \Application\Entity\Db\nommaj::class;
}
/**
* Retourne l'alias d'entit? courante
*
* @return string
*/
public function getAlias()
{
return 'fr';
}
public function getList(QueryBuilder $qb = null, $alias = null)
{
list($qb, $alias) = $this->initQuery();
return parent::getList($qb, $alias);
}
}
......@@ -73,6 +73,32 @@ return [
],
'may_terminate' => true,
],
'type-modulateur-structure-saisie' => [
'type' => 'Segment',
'options' => [
'route' => '/type-modulateur-structure-saisie/:typeModulateur',
'constraints' => [
'typeModulateur' => '[0-9]*',
],
'defaults' => [
'action' => 'type-modulateur-structure-saisie',
],
],
'may_terminate' => true,
],
'type-modulateur-structure-delete' => [
'type' => 'Segment',
'options' => [
'route' => '/type-modulateur-structure-delete/:typeModulateurStructure',
'constraints' => [
'typeModulateurStructure' => '[0-9]*',
],
'defaults' => [
'action' => 'type-modulateur-structure-delete',
],
],
'may_terminate' => true,
],
],
],
],
......@@ -106,7 +132,7 @@ return [
],
[
'controller' => 'Application\Controller\Modulateur',
'action' => ['saisie', 'delete', 'type-modulateur-saisie', 'type-modulateur-delete'],
'action' => ['saisie', 'delete', 'type-modulateur-saisie', 'type-modulateur-delete','type-modulateur-structure-saisie','type-modulateur-structure-delete'],
'privileges' => [Privileges::MODULATEUR_EDITION],
],
],
......@@ -143,6 +169,7 @@ return [
'invokables' => [
Form\Modulateur\ModulateurSaisieForm::class => Form\Modulateur\ModulateurSaisieForm::class,
Form\Modulateur\TypeModulateurSaisieForm::class => Form\Modulateur\TypeModulateurSaisieForm::class,
Form\Modulateur\TypeModulateurStructureSaisieForm::class => Form\Modulateur\TypeModulateurStructureSaisieForm::class,
],
],
];
......@@ -12,6 +12,7 @@ use Application\Form\Modulateur\Traits\ModulateurSaisieFormAwareTrait;
use UnicaenApp\View\Model\MessengerViewModel;
use Application\Service\Traits\TypeModulateurServiceAwareTrait;
use Application\Form\Modulateur\Traits\TypeModulateurSaisieFormAwareTrait;
use Application\Form\Modulateur\Traits\TypeModulateurStructureSaisieFormAwareTrait;
use Application\Service\Traits\ContextServiceAwareTrait;
class modulateurController extends AbstractController
......@@ -21,6 +22,7 @@ class modulateurController extends AbstractController
use ModulateurSaisieFormAwareTrait;
use TypeModulateurSaisieFormAwareTrait;
use TypeModulateurStructureServiceAwareTrait;
use TypeModulateurStructureSaisieFormAwareTrait;
use ContextServiceAwareTrait;
......@@ -138,6 +140,49 @@ class modulateurController extends AbstractController
$this->flashMessenger()->addErrorMessage(DbException::translate($e)->getMessage());
}
return new MessengerViewModel(compact('typeModulateur'));
}
public function typeModulateurStructureSaisieAction()
{
/* @var $typeModulateurStructure typeModulateurStructure */
/* @var $typeModulateur typeModulateur */
$typeModulateur = $this->getEvent()->getParam('typeModulateur');
$form = $this->getFormTypeModulateurStructureSaisie();
// if (empty($typeModulateurStructure)) {
$title = 'Création d\'un nouveau Type de Modulateur de Structure';
$typeModulateurStructure = $this->getServiceTypeModulateurStructure()->newEntity()
->setTypeModulateur($typeModulateur);
// } else {
//$title = 'Édition d\'un Type de Modulateur pour une structure';
//}
$form->bindRequestSave($typeModulateurStructure, $this->getRequest(), function (typeModulateurStructure $tms) {
try {
$this->getServiceTypeModulateurStructure()->save($tms);
$this->flashMessenger()->addSuccessMessage('Enregistrement effectué');
} catch (\Exception $e) {
$e = DbException::translate($e);
$this->flashMessenger()->addErrorMessage($e->getMessage() . ':' . $tms->getId().':'.$tms->getTypeModulateur());
}
});
return compact('form', 'title');
}
public function typeModulateurStructureDeleteAction()
{
/* @var $typeModulateurStructure typeModulateurStructure */
$typeModulateurStructure = $this->getEvent()->getParam('typeModulateurStructure');
try {
$this->getServiceTypeModulateurStructure()->delete($typeModulateurStructure);
$this->flashMessenger()->addSuccessMessage("Type de Modulateur de structure supprimé avec succès.");
} catch (\Exception $e) {
$this->flashMessenger()->addErrorMessage(DbException::translate($e)->getMessage());
}
return new MessengerViewModel(compact('typeModulateur'));
}
}
\ No newline at end of file
......@@ -13,10 +13,17 @@
</unique-constraints>
<id name="id" type="integer" column="ID">
<generator strategy="SEQUENCE"/>
<sequence-generator sequence-name="TYPE_MODULATEUR_STRUCTU_ID_SEQ" allocation-size="1"/>
</id>
<field name="histoCreation" type="datetime" column="HISTO_CREATION" nullable="false"/>
<field name="histoDestruction" type="datetime" column="HISTO_DESTRUCTION" nullable="true"/>
<field name="histoModification" type="datetime" column="HISTO_MODIFICATION" nullable="false"/>
<many-to-one field="anneeDebut" target-entity="Application\Entity\Db\Annee">
<join-column name="ANNEE_DEBUT_ID" referenced-column-name="ID"/>
</many-to-one>
<many-to-one field="anneeFin" target-entity="Application\Entity\Db\Annee">
<join-column name="ANNEE_FIN_ID" referenced-column-name="ID"/>
</many-to-one>
<many-to-one field="histoModificateur" target-entity="Application\Entity\Db\Utilisateur">
<join-columns>
<join-column name="HISTO_MODIFICATEUR_ID" referenced-column-name="ID"/>
......
......@@ -26,6 +26,15 @@ class TypeModulateurStructure implements HistoriqueAwareInterface
*/
protected $structure;
/**
* @var Annee
*/
private $anneeDebut;
/**
* @var Annee
*/
private $anneeFin;
/**
......@@ -93,4 +102,51 @@ class TypeModulateurStructure implements HistoriqueAwareInterface
{
return $this->structure;
}
/**
* @return Annee
*/
public function getAnneeDebut()
{
return $this->anneeDebut;
}
/**
* @param Annee $anneeDebut
*
* @return TypeInterventionStructure
*/
public function setAnneeDebut(Annee $anneeDebut = null)
{
$this->anneeDebut = $anneeDebut;
return $this;
}
/**
* @return Annee
*/
public function getAnneeFin()
{
return $this->anneeFin;
}
/**
* @param Annee $anneeFin
*
* @return TypeInterventionStructure
*/
public function setAnneeFin(Annee $anneeFin = null)
{
$this->anneeFin = $anneeFin;
return $this;
}
}
<?php
namespace Application\Form\Modulateur\Traits;
use Application\Form\Modulateur\TypeModulateurStructureSaisieForm;
/**
* Description of TypeModulateurStructureSaisieFormAwareTrait
*
* @author UnicaenCode
*/
trait TypeModulateurStructureSaisieFormAwareTrait
{
/**
* @var TypeModulateurStructureSaisieForm
*/
private $formTypeModulateurStructureSaisie;
/**
* @param TypeModulateurStrucureSaisieForm $formTypeModulateurStructureSaisie
*
* @return self
*/
public function setFormTypeModulateurStructureSaisie(TypeModulateurStructureSaisieForm $formTypeModulateurStructureSaisie)
{
$this->formTypeModulateurStrucureSaisie = $formTypeModulateurStructureSaisie;
return $this;
}
/**
* Retourne un nouveau formulaire ou fieldset systématiquement, sauf si ce dernier a été fourni manuellement.
*
* @return TypeModulateurStructureSaisieForm
*/
public function getFormTypeModulateurStructureSaisie()
{
if (!empty($this->formTypeModulateurStructureSaisie)) {
return $this->formTypeModulateurStructureSaisie;
}
return \Application::$container->get('FormElementManager')->get(TypeModulateurStructureSaisieForm::class);
}
}
<?php
namespace Application\Form\modulateur;
use Application\Form\AbstractForm;
use Application\Service\Traits\TypeModulateurServiceAwareTrait;
use Zend\Form\Element\Csrf;
use Zend\Stdlib\Hydrator\HydratorInterface;
use Application\Service\Traits\ContextServiceAwareTrait;
use Application\Service\Traits\StructureServiceAwareTrait;
use Application\Service\Traits\TypeModulateurStructureServiceAwareTrait;
use UnicaenApp\Util;
use Application\Service\Traits\AnneeServiceAwareTrait;
/**
* Description of typeModulateurSaisieForm
*
* @author ZVENIGOROSKY Alexandre <alexandre.zvenigorosky at unicaen.fr>
*/
class typeModulateurStructureSaisieForm extends AbstractForm
{
use ContextServiceAwareTrait;
use TypeModulateurStructureServiceAwareTrait;
use StructureServiceAwareTrait;
use AnneeServiceAwareTrait;
use TypeModulateurServiceAwareTrait;
public function init()
{
$hydrator = new typeModulateurStructureHydrator();
/**
* @var $typesModu \Application\Entity\Db\typeModulateurStructure[]
*/
$this->setHydrator($hydrator);
$this->setAttribute('action', $this->getCurrentUrl());
$this->add([
'name' => 'type-modulateur',
'type' => 'Hidden',
]
);
$this->add([
'name' => 'structure',
'options' => [
'label' => 'Structure',
],
'attributes' => [
'class' => 'selectpicker',
'data-live-search' => 'true',
],
'type' => 'Select',
]);
$this->add([
'type' => 'Select',
'name' => 'annee-debut',
'options' => [
'empty_option' => 'Aucune',
'value_options' => Util::collectionAsOptions($this->getServiceAnnee()->getChoixAnnees()),
'label' => 'année de début',
],
'attributes' => [
'class' => 'selectpicker',
'data-live-search' => 'true',
],
]);
$this->add([
'type' => 'Select',
'name' => 'annee-fin',
'options' => [
'empty_option' => 'Aucune',
'value_options' => Util::collectionAsOptions($this->getServiceAnnee()->getChoixAnnees()),
'label' => 'année de fin',
],
'attributes' => [
'class' => 'selectpicker',
'data-live-search' => 'true',
],
]);
$this->add(new Csrf('security'));
$this->add([
'name' => 'submit',
'type' => 'Submit',
'attributes' => [
'value' => "Enregistrer",
'class' => 'btn btn-primary',
],
]);
$role = $this->getServiceContext()->getSelectedIdentityRole();
$serviceStructure = $this->getServiceStructure();
$qb = $serviceStructure->finderByEnseignement();
if ($role->getStructure()) {
$serviceStructure->finderById($role->getStructure()->getId(), $qb); // Filtre
}
$this->get('structure')
->setValueOptions(\UnicaenApp\Util::collectionAsOptions($serviceStructure->getList($qb)));
return $this;
}
/**
* Should return an array specification compatible with
* {@link Zend\InputFilter\Factory::createInputFilter()}.
*
* @return array
*/
public function getInputFilterSpecification()
{
return [
'annee-debut' => [
'required' => false,
],
'annee-fin' => [
'required' => false,
],
];
}
}
class typeModulateurStructureHydrator implements HydratorInterface
{
use TypeModulateurStructureServiceAwareTrait;
use StructureServiceAwareTrait;
use AnneeServiceAwareTrait;
use TypeModulateurServiceAwareTrait;
/**
* Hydrate $object with the provided $data.
*
* @param array $data
* @param \Application\Entity\Db\typeModulateurStructure $object
*
* @return object
*/
public function hydrate(array $data, $object)
{
$object->setTypeModulateur($this->getServiceTypeModulateur()->getById($data['type-modulateur']));
if (array_key_exists('structure', $data)) {
$object->setStructure($this->getServiceStructure()->get($data['structure']));
}
if (array_key_exists('annee-debut', $data)) {
$object->setAnneeDebut($this->getServiceAnnee()->get($data['annee-debut']));
}
if (array_key_exists('annee-fin', $data)) {
$object->setAnneeFin($this->getServiceAnnee()->get($data['annee-fin']));
}
return $object;
}
/**
* Extract values from an object
*
* @param \Application\Entity\Db\typeModulateurStructure $object
*
* @return array
*/
public function extract($object)
{
$data = [
'id' => $object->getId(),
'type-modulateur' => $object->getTypeModulateur()->getId(),
'structure' => ($s = $object->getStructure()) ? $s->getId() : null,
'annee-debut' => $object->getAnneeDebut() ? $object->getAnneeDebut()->getId() : null,
'annee-fin' => $object->getAnneeFin() ? $object->getAnneeFin()->getId() : null,
];
return $data;
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ namespace Application\Service;
use Application\Entity\Db\TypeModulateur;
use Application\Entity\Db\Structure;
use Application\Entity\Db\ElementPedagogique;
use Application\Entity\Db\TypeModulateurStructure;
use Doctrine\ORM\QueryBuilder;
......@@ -89,6 +90,25 @@ class TypeModulateurService extends AbstractEntityService
}
}
/**
* Retourne une entité à partir de son code
* Retourne null si le code est null
*
* @param string|string[] $code
* @return mixed|null
*/
public function getById($id)
{
if(is_array($id)){
list($qb,$alias) = $this->initQuery();
$qb->andWhere($alias.'.id IN (:'.$alias.'_id)')->setParameter($alias.'_id', $id);
return $this->getList( $qb );
}elseif ($id){
return $this->getRepo()->findOneBy(['id' => $id]);
}else{
return null;
}
}
/**
* Ne récupère que les types de modulateurs associés à un élément pédagogique donné
*
......@@ -143,4 +163,5 @@ class TypeModulateurService extends AbstractEntityService
}
return $this->all;
}
}
\ No newline at end of file
......@@ -3,10 +3,10 @@
* @var $this \Application\View\Renderer\PhpRenderer
* @var $modulateurs \Application\Entity\Db\modulateur[]
* @var $typeModulateurs \Application\Entity\Db\typeModulateur[]
* @var $typeModulateurStructures \Application\Entity\Db\typeModulateurStructure[]
*/
use Application\Provider\Privilege\Privileges;
use Application\Entity\Db\TypeModulateur;
use UnicaenApp\Util;
function affBooleen($flg)
......@@ -70,6 +70,48 @@ foreach ($typeModulateurs as $tm) {
<div class="col-md-9">Saisie par ens:</div>
<div class="col-md-3"><?= affBooleen($tm->getSaisieParEnseignant()) ?></div>
</div>
<table class="table table-bordered">
<?php foreach ($typeModulateurStructures
as $tms) { ?>
<?php if ($tm->getId() == $tms->getTypeModulateur()->getId()) { ?>
<tr>
<td>
<?php if (($tms->getAnneeDebut()) || ($tms->getAnneeFin())) {
if (!$tms->getAnneeDebut()) {
$infoBulle = ' à ' . $tms->getAnneeFin();
} else {
if (!$tms->getAnneeFin()) {
$infoBulle = ' de ' . $tms->getAnneeDebut();
} else $infoBulle = ' de ' . $tms->getAnneeDebut() . ' à ' . $tms->getAnneeFin();
}
} else $infoBulle = ''; ?>
<?php echo ($infoBulle ? '<abbr title="' . $infoBulle . '">' : '') . $tms->getStructure()->getLibelleCourt();
echo($infoBulle ? '</abbr>' : '');
if ($canEdit) { ?>
<a style="position:absolute; right: 20px;" pop-ajax"
href="<?= $this->url('modulateur/type-modulateur-structure-delete', ['typeModulateurStructure' => $tms->getId()]) ?>"
title="Supprimer le type de modulateur pour la structure"
data-content="<p class='lead text-danger'><strong>Attention!</strong> Confirmez-vous cette suppression ?</p>"
data-confirm="true"
data-confirm-button="Oui"
data-cancel-button="Non"
data-submit-reload="true"
>
<span class="glyphicon glyphicon-remove text-danger"></span>
</a>
<?php } ?>
</td>
</tr>
<?php }
} ?>
</table>
<?php if ($canEdit) { ?>
<a class="ajax-modal" data-event="modulateur-saisie"
href="<?= $this->url('modulateur/type-modulateur-structure-saisie', ['typeModulateur' => $tm->getId()]) ?>"
title="Ajouter un type de modulateur pour une structure">
<button type="button" class="btn-xs btn-primary">Ajouter</button>
</a>
<?php } ?>
</div>
<div class="col-md-9">
<table class="table table-bordered">
......
<?php
/**
* @var $this \Application\View\Renderer\PhpRenderer
* @var $form \Application\Form\Modulateur\ModulateurSaisieForm
*/
echo $this->messenger()->addCurrentMessagesFromFlashMessenger();
echo $this->form($form);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment