aidez-moi s'il vous plaît, si quelqu'un peut me donner un exemple comment utiliser ajax avec CakePHP 2.3.0 un exemple est comme ça
<?php echo $this->html->link('Original', '#',
array('onclick'=>'return false;', 'id'=>'remanufactured-link', 'class'=>'get-type-product-link')); ?>
<div id="content">
</div>
lorsque je clique sur un lien original
, un div portant l'ID content
est modifié. Comment puis-je le faire avec Cakephp 2.3.0?
Voir ci-dessous exemple:
$.ajax({
dataType: "html",
type: "POST",
evalScripts: true,
url: '<?php echo Router::url(array('controller'=>'your-controller','action'=>'your-action'));?>',
data: ({type:'original'}),
success: function (data, textStatus){
$("#div1").html(data);
}
});
Utiliser CakePHP avec Ajax n'a pas beaucoup de différence avec HTML/PHP et Ajax.
Voici un exemple d'appel et de réponse ajax dans une application Cake:
jQuery:
$.ajax({
url: '/types/fetch/original',
cache: false,
type: 'GET',
dataType: 'HTML',
success: function (data) {
$('#context').html(data);
}
});
(N'oubliez pas de changer le paramètre url pour qu'il corresponde à votre configuration).
Cela fera une requête ajax à votre contrôleur Types et appellera la méthode fetch () avec le paramètre 'original'.
Votre TypeController ressemblerait à ceci:
class TypesController extends AppController {
public $components = array(
'RequestHandler'
);
public function fetch($type) {
$data = $this->Type->find('all', array(
'conditions'=>array(
'Type.type'=>$type
)
);
$this->set('data', $data);
}
}
L'ajout du composant RequestHandler signifie que Cake utilisera automatiquement la présentation Ajax minimale lors du rendu de vos demandes Ajax. Généralement, cela est ajouté à AppController afin que tous les contrôleurs puissent l'utiliser.
Et la vue associée:
/app/View/Types/fetch.ctp
<ul>
<?php foreach($data as $item): ?>
<li><?php echo $item['Type']['name']; ?></li>
<?php endforeach; ?>
</ul>
Je viens juste de commencer moi-même avec cakePHP et Ajax, mais d'après ce que j'ai compris jusqu'à présent, cela semble être l'approche la plus simple… .. Selon vous, utilisez:
echo $this->Js->link(
'Original',
'#',
array('async' => true,
'update' => 'content',
'id' => 'remanufactured-link'
)
);
<div id="content">
</div>
Ce qui implique quelques choses à propos du contrôleur à partir duquel vous appelez cette vue (par exemple, l'action d'index sera invoquée en cliquant sur le lien, etc.).
Vous pouvez faire avec jquery/ajax
$("#remanufactured-link").click(function(){ whatyouneed.appenTo("#content"); })
whatYouneed peut être une réponse de données pour un post/get ou autre chose.