Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Version de Zend: 2.2.7
Je suis actuellement en train de faire un formulaire avec deux Select.
Le premier est rempli avec les éléments d'une table SPECIALITE et le second serait rempli selon la valeur choisie dans le premier select.
Pour cela, je tente d'utiliser Ajax.
Je récupère bien (via firebug) l'index de la valeur choisie dans le premier select mais le script "getPromotions.php" n'est pas trouvé. J'ai mis ce script dans le même dossier où se trouve les pages .phtml.
Le javascript dans le fichier search.phtml:
<!-- Script pour alimenter le menu déroulant "#select_promo" selon le choix du premier select (#select_spe) --> <script type="text/javascript"> $(document).ready(function () { var promo = $('#select_promo'); $("#select_spe").change(function () { var id_specialite = $(this).val(); $.ajax({ url: "emargement/getPromotions.php", data: 'id_specialite='+ id_specialite, dataType: 'json', // on veut un retour JSON async: false, success: function(json) { console.log('OK'); $.each(json, function(index, value) { // pour chaque noeud JSON // on ajoute l option dans la liste //$("#select_promo").append('<option value="'+ index +'">'+ value +'</option>'); promo.append('<option value="'+ 3 +'">'+ A +'</option>'); console.log(index, value); }); }, error: function (json) { alert("Erreur"); } }); }); }); </script>
La route pour les .phtml est localhost/emargement
Le module.config.php:
<?php return array( 'controllers' => array( 'invokables' => array( 'Emargement\Controller\Creneau' => 'Emargement\Controller\CreneauController', 'Emargement\Controller\Emargement' => 'Emargement\Controller\EmargementController', ), ), 'router' => array( 'routes' => array( 'creneau' => array( 'type' => 'Segment', 'options' => array( 'route' => '/creneau[/:action][/:id_creneau]', 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id_creneau' => '[0-9]+', ), 'defaults' => array( 'controller' => 'Emargement\Controller\Creneau', 'action' => 'index', ), ), ), 'emargement' => array( 'type' => 'segment', 'options' => array( 'route' => '/emargement[/:action][/:id]', 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '[0-9]*', ), 'defaults' => array( 'controller' => 'Emargement\Controller\Emargement', 'action' => 'search', ), ), ), ), ), 'view_manager' => array( 'template_path_stack' => array( 'creneau' => __DIR__ . '/../view/', 'emargement' => __DIR__ . '/../view/', ), 'strategies' => array( 'ViewJsonStrategy', ), ), );
Ma question est: où placer mon script getPromotions.php pour qu'il soit accessible par Ajax?
En vous remerciant.
Hors ligne
L'organisation du module Emargement (SEUL LA SOUS PARTIE EMARGEMENT M'INTERESSE ICI):
├── autoload_classmap.php
├── config
│ └── module.config.php
├── Module.php
├── src
│ └── Emargement
│ ├── Controller
│ │ ├── CreneauController.php
│ │ └── EmargementController.php
│ ├── Form
│ │ ├── CreneauForm.php
│ │ ├── EmargementForm.php
│ │ └── SearchForm.php
│ └── Model
│ ├── Creneau.php
│ ├── CreneauTable.php
│ ├── Emargement.php
│ ├── EmargementTable.php
│ ├── Promotion.php
│ └── PromotionTable.php
└── view
└── emargement
├── creneau
│ ├── add.phtml
│ ├── delete.phtml
│ ├── edit.phtml
│ └── index.phtml
└── emargement
├── add.phtml
├── delete.phtml
├── edit.phtml
├── getPromotions.php
├── index.phtml
└── search.phtml
Hors ligne
Bonjour !
Il te faudrait un peu plus de connaissances en ZF, je t'invite à lire le quick start pour comprendre de quoi il s'agit...
Si tu veux qu'un fichier php pur soit accessible, tu dois le mettre dans le dossier public (ici public/emargement/getPromotions.php). Ça veut dire que ton fichier ne bénéficie pas du tout de Zend Framework. Si tu regardes dans public/index.php ou public/.htaccess selon ton setup, tu verras que si le fichier existe on le sert, sinon on utilise Zend Application (MVC) et donc on engage un routing et dispatch vers un controlleur.
Hors ligne