Překreslení snippetu v komponente a v presenteru zárověn
- Hitny14
- Člen | 90
Zdravím,
chtěl bych Vás poprosit o radu. Mám stránku pro výpis produktů a na tý stránce komponentu pro filtrování produktů. Bez AJAXu vše funguje problém nastává při snaze o AJAXové zpracování.
V komponentě mám formulář pro filtrování jeho zpracování vypadá následovně:
$form->onSuccess[] = function (Form $form, ArrayHash $values) {
$this->filters->setFiltersValue($values);
if($this->getPresenter()->isAjax()) {
$this->getPresenter()->redrawControl('products');
$this->getPresenter()->redrawControl('filters');
$this->redrawControl('filtersForm');
} else {
$this->redirect('this');
}
};
Při tomto použití se mi překreslí pouze
snippet products
Šablona vypadá následujícím způsobem:
{* vykreslení komponenty filters *}
{snippetArea filters}
{control filters}
{/snippetArea}
{* snipet pro produkty *}
{snippet products}
<ul>
{foreach $products as $product}
<li>{$product->title}</li>
{/foreach}
</ul>
{/snippet}
Šablona komponenty filters.latte
:
{form filtersForm, class => 'ajax'}
{snippet filtersForm}
{foreach $values as $value}
{var $inputVal = $value->paramId ?? $value->paramValue}
<div class="custom-control custom-checkbox">
{input $inputName:$inputVal, class => 'custom-control-input click-filter'}
{label $inputName:$inputVal, class => 'custom-control-label'}
</div>
{/foreach}
{/snippet}
{/form}
Jde mi o to, že po osedlání formuláře se mi překreslí pouze
snippet products
a le já bych potřeboval i
snippet filtersForm
aby se mi nastavil disabled na prvky které po
vyfiltorování už nemůžu vybrat.
Děkuji moc za každou radu.
- Hitny14
- Člen | 90
@lookass Přikládám kompletní zdroják na GISTu https://gist.github.com/…38a550600344
- lookass
- Člen | 54
Hitny14 napsal(a):
@lookass Přikládám kompletní zdroják na GISTu https://gist.github.com/…38a550600344
Myslím, že bys měl v tom onSuccess nakrmit šablonu rovnou, potom by to
mělo fungovat.
Jo a moc se mi neosvědčilo z komponenty volat presenter po onSuccess, dojde
tím ke zbytečnému provázání komponenty s presenterem. Lepší bude
nastavení callbacku.