<?php
namespace
app\model;
class
FournisseurDAO
extends
\DAO
{
protected
function
initDaoProperties() {
$this->table = "fournisseurs";
$this->filterClause = " where lower(nom) like lower(?)";
}
}
<?php
namespace
app\controller;
class
FournisseurCtrl
extends
\AppController
{
static protected function action_lister() {
$request
=
new
\Request();
$fournisseurDAO
=
new
\app\model\FournisseurDAO();
$fournisseurDAO->setFilterCriteria('%' . $request->search_criteria . '%');
$fournisseurs
=
array
();
while($row = $fournisseurDAO->getResult()) {
$fournisseurs
[] =
$row
;
}
/* Réponse retournée au contrôleur de façade */
$response
=
new
\Response();
$response
->rows =
$fournisseurs
;
$response
->success = true;
return
$response
;
}
}
Le nom du fournisseur à rechercher a été transmis à l'action du contrôleur à travers le paramètre POST nommé "search_criteria".
Enfin, il ne reste plus qu'à ajouter à la vue "mesfournisseurs.php" :- la saisie du nom du fournisseur dans un formulaire,
- un bouton de recherche
- et le code JavaScript pour appliquer le critère de recherche (voir méthode "filterRows()" du composant graphique ZnetDK Datatable) au clic du bouton de recherche.
Les lignes qui ont été ajoutées à la vue originale du tutoriel sont surlignées en jaune :
<!-- Saisie nom de recherche de fournisseurs --><form id="recherche_fournisseurs_form" class="zdk-form" style="margin-bottom: 10px;"> <fieldset> <legend>Recherche de fournisseurs</legend> <label>Nom</label> <input type="text" name="critere"> </fieldset> <button class="zdk-bt-clear" type="reset">Effacer</button></form><!-- Boutons d'action -->
<div class="zdk-action-bar" data-zdk-dialog="dlg_fournisseur"
data-zdk-datatable="table_fournisseurs">
<button class="zdk-bt-add" title="Nouveau fournisseur">Ajouter</button>
<button class="zdk-bt-edit" title="Modification du fournisseur">Modifier</button>
<button class="zdk-bt-remove" title="Suppression du fournisseur"
data-zdk-action="fournisseurctrl:supprimer">Supprimer</button>
<button class="zdk-bt-search">Rechercher</button>
</div>
<!-- Tableau des fournisseurs -->
<div id="table_fournisseurs" class="zdk-datatable" title="Fournisseurs"
data-zdk-action="fournisseurctrl:lister"
data-zdk-columns='[{"field":"id", "headerText": "Numéro"},
{"field":"nom", "headerText": "Nom"},
{"field":"adresse", "headerText": "Adresse"},
{"field":"code_postal", "headerText": "Code postal"},
{"field":"ville", "headerText": "Ville"}]'>
</div>
<!-- Formulaire dans boîte de dialogue -->
<div id="dlg_fournisseur" class="zdk-modal" title="Fournisseur">
<form class="zdk-form"
data-zdk-action="fournisseurctrl:enregistrer"
data-zdk-datatable="table_fournisseurs">
<label>Numéro : </label>
<input name="id" disabled type="text">
<label>Nom : </label>
<input name="nom" maxlength="50" required type="text">
<label>Adresse : </label>
<textarea name="adresse" rows="3" maxlength="100"></textarea>
<label>Code postal : </label>
<input name="code_postal" maxlength="5" required type="text">
<label>Ville : </label>
<input name="ville" maxlength="50" required type="text">
<button class="zdk-bt-save zdk-close-dialog" type="submit">Enregistrer</button>
<button class="zdk-bt-cancel zdk-close-dialog" type="button">Annuler</button>
</form>
</div>
<script> $(document).ready(function () { $('#fournisseur_actions .zdk-bt-search').click(function() { var critere = $('#recherche_fournisseurs_form input[name="critere"]').val(); $('#table_fournisseurs').zdkdatatable('filterRows', critere); }); });</script>
Espérant avoir répondu à votre question.
Pascal MARTINEZ