2017-05-19 1 views
0

On m'a confié la tâche de mettre un uploader de fichiers dans un projet originellement fait dans zend framework 2. Je suis un débutant dans ce domaine.Essayer de faire un appel ajax typique dans zend framework 2

La structure du projet m'embrouille car elle ne suit pas la structure de l'application Zend Skeleton que j'ai utilisée pour me familiariser avec le projet. Par exemple. Ce projet ne contient pas de fichier module.config. Pour cette raison j'ai eu recours à un appel ajax typique, cependant j'obtiens une erreur de type EXCEPTION_NO_CONTROLLER. Et j'essaie de comprendre comment tirer un appel ajax typique en ZF2.

Le html et l'appel ajax sont:

<form id="fileupload" method="POST" enctype="multipart/form-data"> 

<div class="row"> 
    <input name="files[]" type="file" multiple/> 
</div> 

<div class="row"> 
    <input type="submit" class="btn btn-success" value="Submit"/> 
</div> 

<div id="content" class="row"> 
</div> 

</form> 


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script type="text/javascript"> 

$(document).ready(function(){ 

    $('#fileupload').on('submit', function(e){ 

      e.preventDefault(); 
      $.ajax({ 
       url: "upload.php", 
       type: "POST", 
       data: new FormData(this), 
       contentType:false, 
       processData: false, 
       success: function(data, textStatus){ 

        $("#content").html("data: " + data + " status: " + textStatus); 
       }, 
       error: function(data,textStatus){ 

       alert("data: " + data + " status: " + textStatus);    
       } 
      }); 
     }); 

}); 

</script> 

dans le cupload.php J'ai:

<?php 

$options = array(
    'db_host' => 'hostname', 
    'db_user' => 'username', 
    'db_pass' => 'password', 
    'db_name' => 'dbname', 
    'db_table' => 'dbtable' 
); 

if (is_array($_FILES)){ 
    // MYSQL and PHP logic goes here  
} 

Répondre

0

Conceptuellement, votre code jQuery frontal fait une demande à l'back- terminez le code PHP. Dans une application ZF2, ces requêtes sont gérées via des routes, des contrôleurs et des actions.

Donc, vous devez:

  • ajouter une route qui va gérer le téléchargement. Cela définira le mappage entre l'URL à laquelle le code côté client (votre jQuery) doit faire sa requête et le contrôleur/action back-end qui gérera la requête et retournera une réponse

  • implémenter le contrôleur et l'action défini dans la route

  • modifier votre code frontal pour utiliser l'URL représentée par la route

différentes configurations ZF2 atteindre les deux premières étapes - routage et contrôleurs/actions - de différentes manières, mais typiquement, il est défini dans un module existant - ou même nouveau. La configuration standard pour de telles choses est décrite dans le ZF2 docs.