1. créer la classe DAO d'accès à la tbl_niveaux et retournant les valeurs des colonnes id et libelle_niveau,
2. créer une action de contrôleur interrogeant le DAO pour construire la réponse au format JSON contenant l'identifiant (clé du tableau 'value') et le libellé (clé du tableau 'label') des niveaux à charger dans la dropdown.
static protected function action_niveaux() { $response = new \Response(); $niveauxDAO = new \app\model\Niveaux(); $niveaux = array();
try { while ($row = $niveauxDAO->getResult()) { $niveaux[] = array(
'label' => $row['libelle_niveau'],
'value' => $row['id']); }
$response->rows = $niveaux;
$response->success = TRUE; } catch (PDOException $e) { $response = new \Response(); $response->setCriticalMessage("Selection des niveaux impossible!", $e, TRUE); } return $response;
}
3. dans le formulaire d'enregistrement des données de la table tbl_classe, préciser pour la dropdownle contrôleur et l'action à appeler pour charger les niveaux (attribut data-zdk-action). L'attribut HTML name doit prendre la valeur "id_niveau".
<label>Niveau</label>
<select class="zdk-dropdown" name="id_niveau"
data-zdk-action="moncontroleur:niveaux"
data-zdk-noselection="Choisir un niveau...">
</select>
namespace app\model;
class ClassesDAO extends \DAO {
protected function initDaoProperties() {
$this->table = "tbl_classe";
$this->query = "select tbl_classe.*, tbl_niveaux.libelle_niveau "
$this->query .= "from tbl_classe ";
$this->query .= "left join tbl_niveaux on tbl_classe.id_niveau = tbl_niveaux.id";
}
}
...},
{"field":"libelle_niveau", "headerText": "Niveau"},
{"field":...
Ca devrait fonctionner...
Pascal MARTINEZ
Impossible de trouver La classe (erreur '23000')
<!-- Datatable --><div id="classes-table" class="zdk-datatable zdk-synchronize" title="classes" data-zdk-action="classesctrl:data" data-zdk-paginator="10" data-zdk-columns='[
{"field":"libelle_classe", "headerText": "Classe", "sortable":true}, {"field":"libelle_niveau", "headerText": "Niveau", "sortable":true}]'></div>