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
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
Zpracovani formulare se provadi pred render metodou. Takze ty je v renderDefault zas prepises.