Сделать автозаполнение ZendX в макете - PullRequest
2 голосов
/ 10 октября 2010

Я хотел бы использовать автозаполнение ZendX_Jquery в частичном , , которое находится в моем макете . Как мне это сделать : Мой макет:

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

Акция:

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);
}

Как я могу использовать его в частичном, в макете?

Как я могу отправить autocompleteElement в частичном представлении?,

Спасибо за помощь.

Фабрис

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

@ Фабрицио

У меня была та же проблема с автозаполнением с моим макетом, и я решил ее следующим образом:

  • Использовать заполнитель для моего окна поиска
  • Создание плагина Zend_Controller_Plugin, расширяющего Zend_Controller_Plugin_Abstract
  • в предзапуске выполнить метод renderUiWidgetElement элемента автозаполнения.
  • установить заполнитель с формой

Пример:

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);
    }
}

Ключ к запуску метода renderUiWidgetElement();. Без этого макет не добавит необходимый javascript к элементу автозаполнения. Я получил эту информацию отсюда: http://cientouno.be/blog/categorie/zend-framework

Большое спасибо cientouno!

1 голос
/ 11 октября 2010

Спасибо, но я использовал ActionStack для отображения на каждой странице. И я использую форму.

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

и, в макете:

<div class="prefix_10 grid_6" id="header_search_engine">
   <?php  echo $this->partial("/common/_search_engine.phtml");
   echo $this->layout()->autocomplete;
   ?>
</div>
0 голосов
/ 11 октября 2010

Вы можете отправить элемент автозаполнения при частичном просмотре с этим кодом.

<div class="prefix_11 grid_5" id="header_search_engine">
        <?php  echo $this->partial("/common/_search_engine.phtml", array('autocompleteElement ' => $this->autocompleteElement);  ?>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...