2010-08-16 6 views
-3

J'essaie d'implémenter this tutoriel dans mon application. J'ai réussi à le faire fonctionner jusqu'à ce que je devais modifier le contrôleur de vue et ajouter le lien au fichier .ajax.html.problème avec jquery autocomplete et zend framework

Mon code à ce jour:

class MenuController extends Zend_Controller_Action { 

     public function init() { 
      $this->_helper->ajaxContext()->addActionContext('addRecipe', 'html')->initContext(); 
      parent::init(); 
    } 

       public function addRecipeAction() { 
      if ($this->_helper->ajaxContext()->getCurrentContext()) { 
       $this->view->words = array('leon', 'lionel', 'Lenny', 'Linda', 'Lindy'); 
      } 

      $recipeForm = new Application_Form_Recipe(); 
      $recipeForm->setMethod('post'); 
      $recipeForm->setAction('/menu/add-recipe'); 
      $this->view->recipeForm = $recipeForm; 
     } 
     } 

L'add-recipe.ajax.phtml fichier:

<?php 
foreach ($this->words as $word) { 
    echo "{$word}\n"; 
} 
?> 

Le fichier de vue add-recipe.phtml

<?php 

echo $this->headLink()->appendStylesheet('/js/jquery/css/jquery.autocomplete.css'); 
$this->jQuery()->enable(); 
$this->jQuery()->addJavascriptFile('/js/jquery/js/jquery.autocomplete.js'); 

?> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
      $('#username').autocompleteArray('http://bucatarie/menu/add-recipe/format/html'); 
    }); 
</script> 


<input type="text" name="username" id="username" /> 

Pour certains raison étrange si je remplace $('#username').autocompleteArray('http://bucatarie/menu/add-recipe/format/html'); avec $('#username').autocompleteArray(['Jack', 'John', 'Jason', 'Jeremy', 'jimmy', 'jean']); cela fonctionne parfaitement. Je n'arrive pas à comprendre quel est le problème.

+0

Vous n'avez même pas besoin d'une vue à cela. –

+0

parce que le script est déjà fait, donc je pensais que ce serait très simple à mettre en œuvre en utilisant ce tutoriel. Cela fonctionne si je fournis les données dans le fichier js. Sinon rien ne se passe – user253530

+0

Avez-vous déjà vu la réponse ajax dans firebug? A quoi ressemble-t-il? Si vous accédez à la page de votre navigateur (utilisé dans l'ajax) vous avez le résultat attendu? –

Répondre

0

Essayez ceci:

class MenuController extends Zend_Controller_Action { 

    public function addRecipeAction() { 

     $words = array('leon', 'lionel', 'Lenny', 'Linda', 'Lindy'); 

     foreach($words as $w) echo "$w\n"; 

     $this->_helper->layout()->disableLayout(); 
     $this->_helper->viewRenderer->setNoRender(true); 

    } 
} 

Cela devrait fonctionner.

Quel est l'objectif du code ci-dessous? Pourquoi pas le JSON au lieu du HTML?

$recipeForm = new Application_Form_Recipe(); 
$recipeForm->setMethod('post'); 
$recipeForm->setAction('/menu/add-recipe'); 
$this->view->recipeForm = $recipeForm; 
+0

Pourquoi voter en baisse? Ce code devrait fonctionner. Le problème comme a été dit dans les commentaires, est avec la sortie retournée par le php. Je n'ai vraiment pas compris ... –

+0

Je l'ai résolu en utilisant ZendX AutoComplete. – user253530