Zadejte hledaný výraz...

Nette/forms + latte – sposob pouzitia onSuccess

Creator13
verified
rating uzivatele
(49 hodnocení)
17. 12. 2014 15:14:55
Pouzivam samostatne NETTE/FORMS A LATTE. Mam trochu problem so spracovanim formulara. Formular vykreslim, ale onSuccess mi nezavola metodu compileFormNewsletter.
Je s tym nejaky problem? Je mozne to takto pouzivat aj ked pouzivam iba samostatne NETTE/FORMS? Je nutne este nieco doplnit do kodu, aby to fungovalo?
Mate pre mna nejake rady?
use NetteFormsForm;
public function createComponentFormNewsleter() {
$period = array(
'1' => '1 krát za týždeň',
'2' => '2 krát za týždeň',
'3' => '3 krát za týždeň',
);
$category = $this->getNameAllCategories();
$form = new Form();
$form->addText('email')
->addRule(FORM::EMAIL, 'Emailová adresa nie je v správnom tvare')
->setAttribute('placeholder', 'Emailová adresa')
->setType('email');
$form->addSelect('period', 'Perióda', $period);
$form->addSelect('category', 'Kategória')
->setItems($category, FALSE);
$form->addSubmit('send', 'Odoslať');
$form->onSuccess[] = array($this, 'compileFormNewsletter');
return $form;
}
public function compileFormNewsletter($form) {
if ($this->facade->addNewNewsletterUser($form->getValues(TRUE))) {
$flashMessage = 'Váš email bol zaregistrovaný';
} else {
$flashMessage = 'Je nám ľúto, ale Váš email nebol zaregistrovaný';
}
var_dump($flashMessage);
return $flashMessage;
}
17. 12. 2014 15:14:55
https://webtrh.cz/diskuse/nette-forms-latte-sposob-pouzitia-onsuccess/#reply1077185
_Antik_
verified
rating uzivatele
(22 hodnocení)
17. 12. 2014 15:32:54
V nette frameworku se děje volání callbacku tady http://api.nette.org/2.2.6/source-Application.UI.Form.php.html#128-143 a následuje volaní eventů http://api.nette.org/2.2.6/source-Forms.Form.php.html#391-426, v čistém si to musíš udělat sám. Nejednodušší je použití
Dočteš se toho více zde: http://doc.nette.org/en/2.2/forms a ukázky tady: https://github.com/nette/forms/tree/master/examples
17. 12. 2014 15:32:54
https://webtrh.cz/diskuse/nette-forms-latte-sposob-pouzitia-onsuccess/#reply1077184
Filip Šedivý
verified
rating uzivatele
(25 hodnocení)
17. 12. 2014 18:13:34
Zkuste místo
napsat
A pak toto se nepoužívá!
Když už tak
17. 12. 2014 18:13:34
https://webtrh.cz/diskuse/nette-forms-latte-sposob-pouzitia-onsuccess/#reply1077183
Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
17. 12. 2014 23:55:38
Problém je v tom, že se ti nevolá metoda Form::fireEvents()
Tuto metodu volá NetteApplicationUIForm a ta je součástí celého Frameworku.
Ty máš jen NetteFormsForm. Tato třída metodu obsahuje, ale nevolá ji.
(viz odkazy od _Antik_)
Z toho plyne to, že se o volání metody můžeš postarat sám a eventy ti pak budou fungovat.
Jednoduchý příklad v jednom souboru:
require 'vendor/autoload.php';
use NetteFormsForm;
$form = new Form();
$form->addText('email')->addRule(FORM::EMAIL, 'Emailová adresa nie je v správnom tvare');
$form->addSubmit('send', 'Odoslať');
$form->onSuccess[] = function(){
echo 'succes';
};
$form->onError[] = function(){
echo 'failed';
};
if($form->isSubmitted()){
$form->fireEvents();
}
echo $form;
17. 12. 2014 23:55:38
https://webtrh.cz/diskuse/nette-forms-latte-sposob-pouzitia-onsuccess/#reply1077182
Pro odpověď se přihlašte.
Přihlásit