Salut, voici comment j'ai fait :
-
- Ajout du markup dans la page concernée ou dans le layout (il ne va y avoir qu'un modal affiché à chaque fois donc on n'en crée qu'un)
-
- Ajout d'un layout ajax.ctp dans lequel on n'affiche que le content et les scripts chargés sur la vue (si tu charges d'autres scripts pour une validation de formulaire, par exemple).
-
- On indique au controller de charger la vue ajax.ctp si la requête est faite en AJAX :
if(isset($_SERVER 'HTTP_X_REQUESTED_WITH' ]) && $_SERVER 'HTTP_X_REQUESTED_WITH' ] === 'XMLHttpRequest'){
$this->layout = 'ajax';
} -
- On code le script jQuery
Voici le principe du code jQuery
-
- On place un listener sur le bouton choisi
-
- au clic, on charge la vue associée et on place nos informations dans le markup du modal (c'est ce qui demande le plus de code)
-
- on affiche le modal
Le layout ajax.ctp est important car si tu charges un layout complet, tu risques de recharger toutes les libraires comme jQuery ou bien bootstrap.js, ce qui inclut des erreurs d'affichages et un temps de chargement plus important.
Tu dois quand même prévoir une vue sans JS au cas où l'utilisateur ne peut l'activer.
En espérant que cela t'a aidé!