Bonjour,
je sais que je répond à un vieux sujet mais je suis sur ce framework et je souhaiterais éxécuter en JQuery une action d'un controleur mais sans qu'une vue soit généré !
Est ce possible?
je vous remercie et félicitation pour ce tuto !
Version imprimable
Bonjour,
je sais que je répond à un vieux sujet mais je suis sur ce framework et je souhaiterais éxécuter en JQuery une action d'un controleur mais sans qu'une vue soit généré !
Est ce possible?
je vous remercie et félicitation pour ce tuto !
Salut.
Oui, c'est possible. Il suffit ne pas avoir de ligne qui génère la vue dans l'action du contrôleur qui est appelée par jquery... Peux-tu donner le contexte?
Salut Pierre,
déjà merci pour la réponse et désolé de ne pas avoir répondu plus tôt.
J'ai résolu mon problème tout seul , je n'arrivais pas a faire des appels AJAX sans qu'une vue soit générée mais c'était du au faite qu'un de mes controleurs générais constament une vue dans le constructeur.
merci pour ton interêt !
Super. On s'est rejoint sur la solution.
Perso, j'apprécie beaucoup ce framework qui modélise bien l'architecture MVC.
Salut.
Perso, j'aurais tendance à charger les js au départ, mais si tu veux les charger "à la volée", c'est logiquement ta vue (qui renvoie ton code html) qui devrait intégrer le js dans ce qui est renvoyé par echo... Il faut donc l'inclure au bon endroit dans le code html qui est renvoyé au client (l'explorateur, dans le cas d'une vue).
J'opterais pour la création du texte js dans un fichier stocké dans les ressources, appelé par la vue et intégré dans le code qu'elle renvoie via echo. Pour me faciliter la tâche, dans le framework, j'ai créé une classe Tools dont les fonctions sont statiques et une de ces fonctions récupère le texte d'un fichier stocké dans mon arborescence.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 static function getFileContent($fileName) { $filename = Configuration::get('root').$fileName; if(file_exists($fileName)) { $returnValue = file_get_contents($fileName); return $returnValue; } else { $e = new Exception('Fichier non trouvé'); throw new pfiException($e, 0, "Erreur critique", "Fichier $fileName non trouvé"); } }
Toujours dans mon Tools, j'ai une fonction qui reçoit du texte et un tableau clés/Valeurs contenant des textes à remplacer (clé = texte à remplacer, Valeur = Texte de remplacement).
Mes vues vont systématiquement chercher la page html à afficher dans un fichier html stocké dans mon arborescence, et le code html récupéré contient des balises qui sont remplacées par les textes ou les valeurs voulues.Code:
1
2
3
4
5
6
7
8
9 static function replaceStrings($source, $replacements){ $target = $source; if($replacements) { foreach($replacements as $key => $value) $target = str_replace($key, $value, $target); } return $target; }
Dès lors, ton code html pourrait soit contenir directement ton code js, soit l'intégrer par la suite à la volée.
Merci !
c'était bien des js affiché directement que je souhaite.
Aujourd'hui dans mon dossier framework j'ai un fichier vue qui genere la vue a partir du template + la vue sur laquelle on se trouve.
Mais j'aimerais pouvoir dans la vue, un peu a la manière de cakephp pouvoir dire :
- quel template je dois extend (aujourd'hui je n'ai qu'un seul gabarit)
- et surtout pouvoir dire inclu le sript toto.js mais pas au milieu du template avec la vue mais au bon endroit avec les autre script js du template.
un peu comme je peux aujourd'hui defini le titre de la page quand il fait genererFichier.
Je peux peut être rajouter des variable dans la classe vue au même titre que :
/** Nom du fichier associé à la vue */
private $fichier;
/** Titre de la vue (défini dans le fichier vue) */
private $titre;
et definir le template , les script a charger scpécifique à chaque vue , qu'en penses tu ?