invalidace stranky s jinymi parametry
- lvq
- Člen | 47
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
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
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
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();
}
}