Exemple pour envoyer et reçu des données entre la fonction ajax et action du contrôleur dans le Zend Framework 3J'ai besoin exemple correct pour envoyer ajax et reçu des données dans zend framework 3
Répondre
Voici un exemple simple d'une demande de paiement ajax en utilisant ZF3. Vous pouvez essayer avec celui-ci. Dans cet exemple, nous utiliserions le module Application
par défaut de ZF3.
Supposons que nous récupérions des données via un appel ajax à partir de l'URL suivante.
http://yoursite.com/title
permet de créer une méthode d'action pour l'itinéraire title
dans le IndexController
.
public function titleAction()
{
// Initialize view
$view = new ViewModel();
// Checks if this is a Javascript request
$xmlHttpRequst = $this->getRequest()->isXmlHttpRequest();
if (! $xmlHttpRequst) {
die('Bad request');
}
/**
* Here we may pull data from database but for tests
* here we make an array of titles for the view
*/
$titles = [];
for ($i = 0; $i < 10; $i++) {
$titles[] = "Lorem ipsum dolor {$i}";
}
// Set data to be used in the view
$view->setVariable('titles', $titles);
/**
* Tell the renderer not to show the layout
* by setting setTerminal to true
*/
$view->setTerminal(true);
return $view;
}
Nous avons créé une méthode, nous avons besoin de créer un modèle de vue pour cela.
vue/application/index/title.phtml
<?php
foreach ($titles as $title) {
echo '<h2>' . $title . '</h2>';
}
Maintenant, nous créerions une autre méthode d'action dans le IndexController
où nous faire l'appel ajax.
http://yoursite.com/text
permet donc rendre cette méthode d'action aussi ...
public function textAction()
{
return new ViewModel();
}
modèle
et vue serait comme si
vue/application/index/text.phtml
<h1>Handling ajax request</h1>
<button onclick="showTitle()">Show Title</button>
<div id="box"></div>
<?php
// Set url
$url = $this->serverUrl('/title'); // http://yoursite.com/title
// This is for the "url" catch
echo "<script>" . PHP_EOL;
echo "\tvar url = '{$url}';" . PHP_EOL;
echo "</script>" . PHP_EOL;
?>
<script>
function showTitle() {
$.get(url, function(data){
$('#box').html(data);
})
.done(function(){
console.log('Done!');
})
.fail(function(){
console.log('Failed!');
});
}
</script>
Ce script a besoin de la bibliothèque jQuery Javascript pour faire l'ajax appel. Assurez-vous donc que le script est ajouté dans votre vue/layout/layout.phtml.
La dernière chose dont nous avons besoin est de mettre en place des routes pour les /title
et /text
. Permet d'ajouter ces deux voies à la section de route du module/Application/config/module.config.php
'title' => [
'type' => Literal::class,
'options' => [
'route' => '/title',
'defaults' => [
'controller' => Controller\IndexController::class,
'action' => 'title',
],
],
],
'text' => [
'type' => Literal::class,
'options' => [
'route' => '/text',
'defaults' => [
'controller' => Controller\IndexController::class,
'action' => 'text',
],
],
],
Faites-nous savoir si elle vous rend heureux!
cela a bien fonctionné mais je veux montrer l'exemple pour ajax je ne peux pas envoyer ou recevoir des données entre ajax et action –