invalidace stranky s jinymi parametry

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

zdravim,
byl bych rad, kdybyste me nekdo poradili s mym problemem.
Mam sablonu, kde je v jednom miste snippet, ktery zobrazi na zaklade parametru bud jeden nebo druhy formular.

{snippet formulare}
  {if $editovat}
    {control metaeditaceform}
  {else}
    {control metavyberovyform}
  {/if}
{/snippet}

Prvni formular se zobrazuje bez parametru u url, druhy formular v zavislosti na naparametru url. Potrebuji aby se po odeslani jednoho formulare zobrazil pomoci ajaxu druhy. Ale tady mam problem s tim, ze nevim, kde mam nastavit ty parametry, kdyby to nebylo AJAXem, tak napisu tovarnicku na prvni formular:

	protected function createComponentMetavyberovyform()
	{
$formular = new Metavyberovyform();

		$formular->onSubmit[] = callback($this, 'odeslani_vyberoveho_formulare');
		return $formular;
	}

a zpracovani:

	public function odeslani_vyberoveho_formulare($formular)
	{
//zpracovani........
        $this->redirect('this', $this->fotka['id_fotky'],$hodnoty['vyber_editace']);

  }

ale co mam delat, kdyz chci formulare vymenit AJAXem? Kdyz napisu misto redirectu:

$this->invalidateControl();

, tak se samozrejme formulare nerpohodi.
Je to mozna dost chaoticky, tak jeste jednou shrnuti otazky: Chci, aby se me po odeslati formulare AJAXem nacetl misto formulare jiny formular, a to tak, ze se zmeni parametry stranky, pze to, ktery z formularu se zobrazi je na nich zavisle.
Predem diky za rady.
Pouzivam nette 2.0 na PHP 5.2

Jan Tvrdík
Nette guru | 2595
+
0
-

Nechápu ten problém, proč prostě nenastavíš $this->template->editovat na TRUE a neinvaliduješ ten snippet s tím formulářem?

lvq
Člen | 47
+
0
-

Diky za reakci.
Ta promenna $editovat se prave nastavuje na zaklade parametru url. Chtel bych to totiz mit tak, aby zobrazeni druheho formulare nemuselo predchazet zobrazeni prvniho formulare.
V prvnim formulari vlastne vybiram, co chci editovat, ale nekdy to uz vim dopredu, potom bych chtel v nejake sablone zavolat treba rovnou

{link Editade:, $cislo_fotky, 'vsechno'}

Cimz by se zobrazil hned druhy formular na zaklade faramtru ‚vsechno‘.
Pokud to jeste neni jasne, klidne zodpovim dalsi otazky.

Jan Tvrdík
Nette guru | 2595
+
0
-
public function odeslani_vyberoveho_formulare($formular)
{
	$this->template->editovat = TRUE;
	$this->invalidateControl();
}

Resp. pokud ten formulář nebude odeslán, tak

public function renderFoo($abc)
{
	if ($abc === 'vsechno') {
		$this->template->editovat = TRUE;
		$this->invalidateControl();
	}
}
lvq
Člen | 47
+
0
-

@Jan Tvrdík: moc diky za radu. Sice jsem to udelal trosku jinak, ale ukazal jsi mi cestu. Ja jsem se porad snazil nejak nekam k tomu invalidateControl vecpat parametry a vubec jsem nepremyslel na tim, ze by to slo i jinak.