2010-10-10 12 views
2

Je voudrais utiliser ZendX_Jquery autocomplete dans une partielle, qui est dans ma mise en page. Comment puis-je faire: Ma mise en page:faire une saisie semi-automatique ZendX dans une mise en page

<div class="prefix_11 grid_5" id="header_search_engine"> 
    <?php echo $this->partial("/common/_search_engine.phtml"); ?> 
</div> 

Une action:

public function autocompleteAction($search='') { 
    $this->view->autocompleteElement = new ZendX_JQuery_Form_Element_AutoComplete('ac'); 
    $this->view->autocompleteElement->setJQueryParam('source', '/searchengine/getsearch'); 
    $this->view->autocompleteElement->setJQueryParam('minLength', 
    $this->configApplication->autocomplete->max_cars); 
} 

Comment puis-je utiliser dans la partie, dans la mise en page?

Comment puis-je envoyer le autocompleteElement dans la vue partielle?,

Merci d'aider.

Fabrice

Répondre

0

Vous pouvez envoyer le autocompleteElement dans la vue partielle avec ce code.

<div class="prefix_11 grid_5" id="header_search_engine"> 
     <?php echo $this->partial("/common/_search_engine.phtml", array('autocompleteElement ' => $this->autocompleteElement); ?> 
</div> 
1

Merci, mais, j'ai utilisé ActionStack pour l'affichage sur chaque page. Et fais, j'utilise un formulaire.

public function autocompleteAction() { 
    $formAutoComplete = new Frontoffice_Form_Autocomplete(); 
    $this->view->autocompleteElement = $formAutoComplete; 
    $this->_helper->viewRenderer->setResponseSegment('autocomplete'); 
} 

et, dans la mise en page:

<div class="prefix_10 grid_6" id="header_search_engine"> 
    <?php echo $this->partial("/common/_search_engine.phtml"); 
    echo $this->layout()->autocomplete; 
    ?> 
</div> 
2

@fabrice

J'ai eu le même problème en utilisant autocomplete avec ma mise en page et je l'ai résolu avec les éléments suivants:

  • Utiliser un espace réservé pour ma rechercheBox
  • Créer un Zend_C ontroller_Plugin qui s'étend Zend_Controller_Plugin_Abstract
  • dans la méthode d'exécution predispatch renderUiWidgetElement de l'élément de saisie semi-automatique.
  • régler l'espace réservé à la forme

Exemple:

class myLibrary_Controller_Plugin_SearchBox extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch() 
    { 
     $this->searchBox(); 
    } 

    public function searchBox() 
    { 
     $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); 
     $viewRenderer->initView(); 
     $view = $viewRenderer->view; 

     $searchForm = new Application_Form_JQueryForm(); 
     $searchForm->acProduct->renderUiWidgetElement(); 
     $view->placeholder('searchBox')->set($searchForm); 
    } 
} 

La clé est de lancer procédé renderUiWidgetElement();. Sans cela, la mise en page n'ajoutera pas le javascript nécessaire à l'élément de saisie semi-automatique. J'ai obtenu cette information d'ici: http://cientouno.be/blog/categorie/zend-framework

Merci beaucoup à Cientouno!