ajax form se odešle, ale snippet nepřekreslí

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Mira8
Člen | 36
+
0
-

Ahoj,
snažím se zprovoznit ajax formulář (vyhledávač), používám nette.ajax.js, vše funguje až na $this->redrawControl(‚listVideos‘);

Když dumpnu $this->template->videos ve funkci searchFormSucceeded() vidím, že obsahuje nová data, ale snippet se nepřekreslí, kód vypadá následovně:

namespace App\Presenters;

use Nette,
    App\Model,
    Nette\Application\UI;


class HomepagePresenter extends BasePresenter
{
	public function renderDefault()
	{
       $this->template->videos = $this->videos->getAllVideos();
	}

    /**
     *
     * @return UI\Form
     */
    protected function createComponentSearchForm()
    {
        $form = new UI\Form;
        $form->addText('searchInput', '');
        $form->addSubmit('send', '');
        $form->addProtection('Submission timed out. Please try again.');
        $form->onSuccess[] = array($this, 'searchFormSucceeded');

        return $form;
    }

    /**
     *
     * @param UI\Form $form
     * @param $values
     */
    public function searchFormSucceeded(UI\Form $form, $values)
    {
        $this->template->videos = $this->videos->search($values->searchInput);

        if (!$this->isAjax()) {
            $this->redirect('this');
        } else {
            $this->redrawControl('listVideos');
            //$form->setValues(array(), TRUE);
        }
    }
}
{block content}
    <div class="container">
          <header id="slider-nav" class="slide">
            <div style="float: left;" class="search_box">
                {form searchForm class => ' search-form ajax' }
                    {input searchInput class => 'text-box', placeholder => 'Search videos...'}
                    <input type="submit" value="">
                {/form}
            </div>
          </header>
          <div class="content slide">
            <ul class="responsive">
                <li class="body-section">
                    <div id="photo-gallery" class="gallery">
                        {snippet listVideos}
                            {foreach $videos as $v}
                               <div class="gallery-photo-container">
                                  <a class="gallery-photo" href="{$v->video_url}" data-gallery>
                                     <img src="{$v->img_url}" width="100%">
                                  </a>
                               </div>
                             {/foreach}
                         {/snippet}
                     </div>
                </li>
             </ul>
          </div>
        </div>
{/block}

Nedokáže mi někdo poradit? Díky moc!

David Matějka
Moderator | 6445
+
+2
-

Zpracovani formulare se provadi pred render metodou. Takze ty je v renderDefault zas prepises.

Mira8
Člen | 36
+
0
-

pecka diky! zmena renderDefault() na actionDefault() pomohla ;)