Bonjour,
Je viens de me mettre à CakePHP et voilà j'ai beaucoup de mal à me servir du javascript et de jquery.
Je voudrais pouvoir appeler des actions controller en javascript, qu'il me renvoie un résultat et que le javascript renvoie ça à la même vu en la reformatant...
comment dois-je opérer ?
merci de votre aide
Bonjour,
Pour charger un script dans ton layout par défaut il te suffit d'ajouter
<?php echo $scripts_for_layout; ?>
et
<?php echo $this->Html->script('scripts'); ?>
Il faut mettre tes fichiers js dans le dossier js du webroot.
Si tu veux charger un script dans une view, il faut ajouter en options 'inline'=>false ce qui permet de lier ton script à ton script_for_layout
ce qui donne
<?php $this->Html->script('script',array('inline'=>false)); ?>
Si tu veux charger directement un script il te faut mettre
<?php $this->Html->scriptStart(array('inline'=>false)); ?>
$(document).ready(function() {
ton code....
});
<?php $this->Html->scriptEnd(); ?>
par ex pour markItUp :
<?php $this->Html->script('markitup/jquery.markitup.js',array('inline'=>false)); ?>
<?php $this->Html->scriptStart(array('inline'=>false)); ?>
$(document).ready(function() {
$(".markItUp").markItUp(mySettings);
});
<?php $this->Html->scriptEnd(); ?>
Merci de ta réponse ! scriptStart me servira.
Mais par exemple, j'ai un input, quand je click sur un lien, je veux envoyer la valeur de ce input, sans utliser de POST.
avec JQuery un simple $('input.Machin').attr('value') m'aurait suffit à récup la valeur et la la passer dans l'url. La je suis un peu embeter... Car ce lien est appelé en ajax, il doit emporter cette valeur, la traiter et me la renvoyé en ajax.
merci de ton aide
Super réponse de Zenkiai claire et détaillée , toutefois j'ai un souci :
Je met dans le layout :
<?php echo $scripts_for_layout; ?>
et dans la vue ou je veux charger un script particulier je met :
<?php $this->Html->script('monscript',array('inline'=>false)); ?>
bien evidemment "monscript.js est dans le dossier JS
Et ca ne fonctionne pas ??? ai-je mal fait quelquechose ?
Merci d'avance de votre éclairage :)