Pristup k promene v sablone
- tgif
- Člen | 8
Mam zacatecnicky dotaz, jakym zpusobem se daji vypsat promene po postu
formulare?
presneji
<?php
public function contactFormSubmitted($form) {
try {
$this->pokus = (array)$form->getValues();
$this->sendMail($form->getValues());
$this->flashMessage('Your application form was sent successfully!');
$this->template->formValues = $form->getValues();
$this->redirect('close',$this->pokus);
} catch (IOException $e) {
$form->addError($e->getMessage());
}
}
public function renderClose($variables) {
$this->template->email='';
$this->template->aaa = $variables;
$this->template->pokus = $this->pokus;
}
?>
cekal bych ze v sablone budu moct pouzit {aaa[‚xxx‘]} jenze to je prazdne. Funguje me promena {pokus}, jenze pouze pokud je perzistentni (coz neni uplne to co bych si predstavoval). Ladenka vidi krasne vsecky promene z formulare, jenze se k nim nedostanu. Zkusil sem i
$httpRequest = $container->httpRequest;
$get = $httpRequest->getQuery();
Tady pro zmenu zkoncim, ze $container neni definovat. Poradi nekdo „rozumnou“ metodu jak ty data precist? (samosrejme pokud by se to cele povedlo predat v tom $this->redirect(‚close‘,$this->pokus); byl bych nejstastnejsi)
Editoval tgif (6. 2. 2012 16:52)
- OndrejSlamecka
- Člen | 41
<?php
// onSuccessHandler:
$this->template->formValues = $form->getValues();
?>
Je správné řešení jak dostat vstup z formuláře do šablony.
V šabloně k nim přistoupíš prostě
{$formValues->inputName}
. Proč bys chtěl ty data vložit v
„renderClose“? Metody render se starají o vykreslování.
Handlery jako „contactFormSubmitted“ o zpracování formuláře.
Používej prosím formátování kódu, stačí ho napsat do <?php … ?>.
Editoval OndrejSlamecka (24. 1. 2012 20:40)
- tgif
- Člen | 8
v kodu sem se samozrejme pokusil pouzit
<?php
$this->template->formValues = $form->getValues();
?>
jenze se mi to pri redirectu ztrati (nebo nevim jak to potom v ty sablone kam se presmeruju najit
<?php
$form->values->jmeno_inputu;
?>
sem samozrejme taky zkousel a furt nic (pritom ladenka ty promene vidi, jenze
uz mi nerekne jak se k nim dostat).
Normalne bych si ty data nasel, jenze tenhle problem je zpusobenej tim ze obsah
toho redirectu se navic vykresluju v lightboxu a bez pouziti globalni promeny
nemam tuchu jak se k tem datum dostat.
Editoval tgif (6. 2. 2012 0:32)
- Ot@s
- Backer | 476
tgif napsal(a):
jenze se mi to pri redirectu ztrati (nebo nevim jak to potom v ty sablone kam se presmeruju najit
Moc tomu celému, co píše nerozumím, resp. nedává mi to moc smysl. Tomu budou odpovídat i rady.
- neprováděj redirect (proměnná se ti „neztratí“)
- pokud tam musí být redirect, používej před redirectem uložení obsahu formu do session
Pokud použiješ persistenci, tak data najdeš v proměnné presenteru/komponenty, kterou jsi označil jako persistetní.
class ProductPresenter extends Presenter
{
/** @persistent */
public $data;
public function renderDefault() {
$this->template->data = $this->data;
}
}
Editoval Ot@s (6. 2. 2012 6:35)
- tgif
- Člen | 8
Chapu vyjadruju se trosku zmatene, v podstate vse o co mi slo je jestli je mozne zavolat
<?php
$this->redirect(‚close‘,$this->pokus);
?>
tedy presmerovat se na stranku/sablonu a predat tam nejaky parametr (resp.
kdyz uz ho predam kde ho najdu?). Ulozit promene do session jeste vyzkousim, ale
nejsem si uplne jist, ze zpusobem kterym predavam data lighboxu se mi nespusti
nova. Kdyz vynecham redirect, zobrazi se mi uvodni stranka webu. Pres ty
persistentni parametry mi to s redirectem funguje perfektne, ale chtel sem se
jim vyhnout (nemam rad globalni promenne).
kazdopadne dik, za podnet