Překreslení snippetu v komponente a v presenteru zárověn

Hitny14
Člen | 90
+
0
-

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.

lookass
Člen | 54
+
0
-

Řekl bych, že bys měl snippetAreu nahradit za snippet.

Hitny14
Člen | 90
+
0
-

@lookass To už jsem taky zkoušel ale bohužel bez úspěchu

lookass
Člen | 54
+
0
-

Ok a jak vypadá ta komponenta?

Hitny14
Člen | 90
+
0
-

@lookass Přikládám kompletní zdroják na GISTu https://gist.github.com/…38a550600344

lookass
Člen | 54
+
0
-

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.

Hitny14
Člen | 90
+
0
-

@lookass Děkuji za radu. Nakonec jsem to vyřešil takto:

$this->removeComponent($this->getComponent('filter'))

a formulář se mi překresluje správně.