Nefungující visual paginator

- demonic
 - Člen | 19
 
Zdravím,řeším takový problémek. Visual paginator se sice zobrazuje ale
po kliknutí mi zmizí snippet search_result místo toho aby se překreslil. Po
vyhledání se načtou do search_result výsledky s paginátorem
, po kliknutí např na druhou stránku div zmizí a nic se neděje.
    public function MySearchFormSubmitted(AppForm $form)
    {
      if ($form['ok']->isSubmittedBy()) {
        $search = $form['search']->value;
        $subject = new Subjects;
        $vp = $this['vp']; //zavola komponentu Vp
        $paginator = $vp->paginator;
        $paginator->itemsPerPage = 2;
        $paginator->itemCount = $subject->CountResults($search);
        $subjects = $subject->findSubjects($search, $paginator->offset, $paginator->itemsPerPage);
        $this->template->search_term = $search;
        $this->template->suggestions = $subjects;
        if (!$this->isAjax())
          $this->redirect('this');
        else {
          $this->invalidateControl('search_result');
          $this->invalidateControl('search_form');
          $form->setValues(array(), TRUE);
        }
      }
    }
    public function renderDefault()
    {
      if ($this->isAjax()){
        $this->invalidateControl('search_result');
        }
    }
    protected function createComponentVp()
    {
      return new \VisualPaginator;
    }
--/
					Editoval demonic (24. 11. 2010 20:14)

- bojovyletoun
 - Člen | 668
 
viděl bych chybu, že paginator nastavuješ(), jen pokud odesíláš nějaký formulář.
zkus přemístit kod jinam (itemspaerpage, subejcts)..
help
https://pla.nette.org/…ivajici-ajax#…
Editoval bojovyletoun (24. 11. 2010 22:09)

- demonic
 - Člen | 19
 
Já teoreticky potřebuju ten paginátor až ve chvíli, když se formulář odešle, do té doby nemám co stránkovat a přemístit asi kod není možné, vše se odvíjí od hodnoty $search na kterou čekám. Můžes uvést co jsi měl na mysli? Na ten článek sem se díval několikrát i předtím ale pořád mi to nejde do hlavy. Děkuji za příspěvek!
Editoval demonic (24. 11. 2010 22:46)

- bojovyletoun
 - Člen | 668
 
taky začínám. 1) zkus podle tutoriálu
- zkus bez vyhledávání, aby to fungovalo, a pak až tam přidat search
 

- demonic
 - Člen | 19
 
Udělal sem toto, níže uvedené řešení, které funguje, avšak přijde mi dost nečisté a navíc tím přicházím o podporu ajaxu odeslání formuláře. Dokázal by někdo poradit nějaké čistější řešení? S příkladem užití. Díky za jakékoli rady!
    protected function createComponentVp()
    {
      return new \VisualPaginator;
    }
    public function renderDefault()
    {
      if($this->getParam('query')){
        $search = $this->getParam('query');
        $subject = new Subjects;
        $vp = $this['vp']; //zavola komponentu Vp
        $paginator = $vp->paginator;
        $paginator->itemsPerPage = 2;
        $paginator->itemCount = $subject->CountResults($search);
        $subjects = $subject->findSubjects($search, $paginator->offset, $paginator->itemsPerPage);
        $this->template->search_term = $search;
        $this->template->suggestions = $subjects;
        if ($this->isAjax())
        $this->invalidateControl('search_result');
       }
    }
public function MySearchFormSubmitted(AppForm $form)
    {
      if ($form['ok']->isSubmittedBy()) {
        $query = $form['search']->value;
        $this->redirect('Default', array('query' => $query));
      }
    }
    protected function createComponentMySearchForm($name)
    {
        $form = new AppForm($this, $name);
        $form->getElementPrototype()->class('ajax');
        $form->addText('search', 'Hledaný prodejce:')
           ->addRule(Form::FILLED, 'Zadejte prosím hledaného prodejce.');
        $form->addSubmit('ok', 'Vyhledat');
        $form->onSubmit[] = callback($this, 'MySearchFormSubmitted');
    }
--/
<script>
  $("a.ajax, .paginator a").live("click", function (event) {  /*visual_paginator*/
  var vp_link;
    event.preventDefault();
      if($(this).attr('href') == '/'){
        vp_link = '/?vp-page=1';
      }
      else{
        vp_link = this.href;
      }
    $.get(vp_link+'&'+'query={!$search_term}');
    alert(this.href+'{$search_term}');
    });
// ...tady je jeste podpora odeslani formulare ajaxem
</script>
					Editoval demonic (26. 11. 2010 9:00)