2010-03-02 5 views
1

Ok, donc Ive a obtenu ce fichier Javascript, simplement:Comment lier fichier Javascript dans le dossier modèle dans Zend

$(document).ready(function() { 
    $('.status').prepend("<div class='score_this'>(<a href='#'>score this item</a>)</div>"); 
    $('.score_this').click(function(){ 
     $(this).slideUp(); 
     return false; 
    }); 

    $('.score a').click(function() { 
     $(this).parent().parent().parent().addClass('scored'); 
     $.get("/js/Rating.php" + $(this).attr("href") +"&update=true", {}, function(data){ 
      $('.scored').fadeOut("normal",function() { 
       $(this).html(data); 
       $(this).fadeIn(); 
       $(this).removeClass('scored'); 
      }); 
     }); 
     return false; 
    }); 
}); 

Où il est dit /js/Rating.php, ce fichier est en application/modules/recipes/models /Rating.php, c'est parce qu'il contient une logique Zend qui ne peut pas être accessible en dehors de l'application.

Répondre

2

À travers le contrôleur. C'est le seul moyen raisonnable.

Rappelez-vous que le JavaScript est exécuté du côté client, pas du serveur. Vous avez placé vos modèles en dehors du site Web accessible au public, car vos utilisateurs sont censés accéder à votre application MVC (par exemple la logique de domaine dans le modèle de classement) via le FrontController de votre application et non directement sur le modèle. En d'autres termes, puisque .get() émet une requête Ajax, vous devez adresser cette requête au contrôleur de classification dans votre application et faire en sorte que le contrôleur Ratings appelle le modèle approprié dans votre application. Le modèle renvoie quelque chose au contrôleur et le contrôleur renvoie ensuite ce résultat au client.

Exemple:

$.get("/rating/update/someParamId/someParamValue"); 

Cela suppose que vous utilisez les règles de réécriture par défaut. Dans votre contrôleur, vous pouvez alors faire $this->getRequest()->getParam('someParamId') et il contiendra 'someParamValue'. Le contrôleur renvoie le ViewScript généralement rendu par l'action au client. Vous pouvez donc désactiver la mise en page pour simplement renvoyer le fragment HTML.

+0

Donc, si j'avais un contrôleur de cotes, comment pourrais-je changer le javascript pour obtenir une redirection vers l'URL complète? – bluedaniel

+1

Oui, vous le faites mal à la minute. Je suppose que vous avez un contrôleur de classification comme le mentionne Gordon, vous appelleriez probablement l'action quelque chose comme mise à jour, et votre URL devrait être/ratings/update. Cela devrait le résoudre, mais je ne peux pas aider à écrire le code réel :) –

+0

je suis d'accord avec cette réponse. Par exemple, vous pouvez créer un contrôleur de notation et l'obtenir comme une page simple à travers JS, mais les paramètres passent en utilisant la méthode POST, cela n'a pas d'importance. En outre, dans l'idéal obtenir une réponse du script JSON pour vérifier les erreurs et ainsi de suite. – kubum

Questions connexes