Bonjour,
Je voudrais savoir si avec le module datatables, c'est possible d'ajouter une colonne pour renvoyer vers la page de modification ou de suppression de la donnée.
Merci d'avance
Version imprimable
Bonjour,
Je voudrais savoir si avec le module datatables, c'est possible d'ajouter une colonne pour renvoyer vers la page de modification ou de suppression de la donnée.
Merci d'avance
Oui bien sur,
Je vous poste un exemple dans la matinée :)
Dans l'exemple qui suit, j'ai
- ajouté une colonne "action"
- ajouter dans le tableau des datas un lien HTML
Dans le module qui créé instancie le module datatables:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public function _list(){ //instancier le module $oTable=new module_datatables; $oTable->setPaginationLimit(4); //l'id de la div html $oTable->setId('monId'); //on definit la hauteur du tableau (en pixels) $oTable->setHeight(120); $oTable->setWidth(600); //la page permettant de retourner le contenu au format json $oTable->setJsonLink('default::listJson'); //on defini (si besoin) un menu deroulant permettant de modifier la pagination $oTable->setListLimit(array(10,20)); //definir le sens par defaut de tri (asc/desc) $oTable->setDefaultSort('desc'); //defintion du tri par defaut $oTable->setDefaultSortField('pkey'); $oTable->addColumn('Nom','nom'); $oTable->addColumn('Prenom','prenom'); //AJOUT D UNE COLONNE ACTION (qui contiendra le lien Edit) $oTable->addColumn('Action','action'); $oView= $oTable->build(); $this->oLayout->add('main',$oView); }
Et dans la méthode retournant le json lu par datables, on ajoute le lien html vers un module CRUD que j'ai créé via le builder
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public function _listJson(){ $oJson=module_datatables::getJson(); //on precise la liste des champs autorise a etre trie $oJson->setSortFieldAllowed(array('pkey','nom','prenom')); //attention a bien mettre les colonnes avant de definir le total et les data $oJson->addColumn('nom'); $oJson->addColumn('prenom'); //AJOUT COLONNE ACTION POUR AFFICHER LE LIEN EDIT $oJson->addColumn('action'); if($oJson->hasFilter()){ $count = model_auteur::getInstance()->findTotalFiltered($oJson->getListFilter()); $oJson->setTotal($count); $tData=model_auteur::getInstance()->findListFilteredAndLimitOrderBy($oJson->getListFilter(),$oJson->getStart(),$oJson->getLimit(),$oJson->getSortField(),$oJson->getSortSide()); }else{ $count = model_auteur::getInstance()->findTotal(); $oJson->setTotal($count); $tData=model_auteur::getInstance()->findListLimitOrderBy($oJson->getStart(),$oJson->getLimit(),$oJson->getSortField(),$oJson->getSortSide()); } //ON BOUCLE SUR LE TABLEAU tData POUR AJOUTER CE CHAMP ACTION foreach($tData as $oData){ //AJOUT DANS CE CHAMP ACTION D UN LIEN HTML VERS UNE PAGE D EDITION DE LA LIGNE $oData->action='<a href="'._root::getLink('auteur::edit',array('id'=>$oData->pkey)).'">Edit</a>'; } $oJson->setData($tData); $oJson->show(); }
ça fonctionne à merveille. Merci